2012-06-14 6 views
6

Estaba intentando hacer una unión y luego un grupo, ¡Mi información agrupada que se devuelve es excelente! Funciona como un encanto, pero todavía necesitan tener acceso a los valores fuera de la agrupación, si eso tiene sentido ..Agrupe por varias tablas y aún tenga acceso a la consulta original?

he encontrado un ejemplo en stackoverflow, lo que probablemente explica mejor

var query = from c in context.Contacts 
      join o in context.Orders on c.Id equals o.CustomerId 
      select new 
      { 
       Contact = c, 
       Order = o 
      } into ContactAndOrder 
      group ContactAndOrder by ContactAndOrder.Order.Id into g 
      select new 
      { 
       g.Key, 
       ContactWhatever = g.Sum(co => co.Contact.Whatever), 
       OrderWhatever = g.Sum(co => co.Order.Whatever) 
      }; 

Ahora bien, esto parece funcionar genial, el problema es en mi situación el co.Order.Whatever es una cadena así que me sale un error diciendo que no puedo convertir string a int, esto lo entiendo como la función agregada. Sum espera una int ...

Mi la pregunta realmente es, ¿hay una función agregada o algo similar que pueda obtener el valor de co.Order.Whatever (una cadena en mi caso)

ser

El problema es cuando el grupo se ha hecho por pierdo "c" y "o"

espero que alguien pueda ayudar.

gracias de antemano

+0

¿Cuáles son vas a hacer con 'co.Order.Whatever'? – Andrei

+0

Solo deseo imprimir el valor .... el valor siempre será el mismo para el registro agrupado ... – Martin

Respuesta

0

si siempre es el mismo en el grupo, el primero será suficiente ...

ContactWhatever = g.First().Contact.Whatever 

persona use @Andrei respuesta o

ContactWhatever = g.Select(o => o.Contact.Whatever).Aggregate((a,b) => a + "," + b) 
Cuestiones relacionadas