2012-06-14 4 views
6

Stavo cercando di fare un join e poi un gruppo per, Le mie informazioni raggruppate che vengono restituite sono grandiose! funziona come un fascino, ma ho ancora bisogno di accesso ai valori al di fuori del gruppo, se questo ha un senso ..Raggruppa per più tabelle e hai ancora accesso alla query originale?

ho trovato un esempio su StackOverflow, il che probabilmente spiega meglio

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) 
      }; 

Ora, questo sembra funzionare grande, il problema è nella mia situazione il co.Order.Whatever è una stringa quindi ottengo un errore che dice non può convertire string in int, questo capisco come la funzione aggregata Sum si aspetta un int ....

My la domanda è davvero, c'è una funzione aggregata o qualcosa di simile a posso ottenere il valore di co.Order.Whatever (una stringa nel mio caso)

Il problema dell'essere è una volta che il gruppo è stato fatto da perdo "c" e "o"

spero che qualcuno possa aiutare.

grazie in anticipo

+0

Quali sono hai intenzione di fare con 'co.Order.Whatever'? – Andrei

+0

Voglio solo stampare il valore .... il valore sarà sempre lo stesso per il record raggruppato ... – Martin

risposta

0

se è sempre lo stesso del gruppo, il primo sarà sufficiente ...

ContactWhatever = g.First().Contact.Whatever 

altro usano @Andrei Risposta o

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