2012-06-14 3 views
6

Ich habe versucht, ein Join und dann eine Gruppe von, Meine gruppierten Informationen, die zurückgegeben wird, ist großartig! wirkt wie ein Zauber, aber ich immer noch Zugriff auf Werte außerhalb der Gruppierung müssen, wenn das Sinn macht ..Gruppieren nach mehreren Tabellen und haben immer noch Zugriff auf die ursprüngliche Abfrage?

ich ein Beispiel auf Stackoverflow gefunden, die es erklärt wahrscheinlich besser

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

Nun ist diese scheint zu funktionieren groß, Problem ist in meiner Situation die co.Order.Whatever ist eine Zeichenfolge, so bekomme ich einen Fehler sagen, kann String in int nicht konvertieren, dies verstehe ich als Aggregatfunktion Sum erwartet ein int ....

Meine Frage ist wirklich, gibt es eine Aggregatfunktion oder etwas Ähnliches kann ich den Wert von co.Order.Whatever (eine Zeichenfolge in meinem Fall)

Das Problem Wesen ist, wenn die Gruppe von getan worden ist i „c“ und „o“ verlieren

Ich hoffe, jemand helfen kann.

Dank im Voraus

+0

Was verwendet Antwort ist wirst du mit 'co.Order.Whatever' machen? – Andrei

+0

Ich möchte nur den Wert drucken .... der Wert wird immer gleich für den gruppierten Datensatz sein ... – Martin

Antwort

0

, wenn es in der Gruppe immer das gleiche ist, wird die erste genug sein ...

ContactWhatever = g.First().Contact.Whatever 

sonst @Andrei oder

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