2010-05-20 5 views
9

Ich habe zwei TabellenZugriff auf alle Daten nach dem Verbinden von zwei Tabellen und Gruppen mit ihnen Linq

TableA 
aId 
aValue 

TableB 
bId 
aId 
bValue 

Ich möchte diese beiden Tabellen über aId verbinden, und von dort, gruppieren sie durch bValue

var result = 
from a in db.TableA 
join b in db.TableB on a.aId equals b.aId 
group b by b.bValue into x 
select new {x}; 

Mein Code erkennt den Join nach der Gruppe nicht. Mit anderen Worten, die Gruppierung funktioniert, aber der Join funktioniert nicht (oder zumindest kann ich nicht herausfinden, wie auf alle Daten nach dem Join zugegriffen werden soll).

Antwort

21

Der Ausdruck zwischen den group und by erstellt die Gruppenelemente.

var result = 
from a in db.TableA 
join b in db.TableB on a.aId equals b.aId 
group new {A = a, B = b} by b.bValue; 

    // demonstration of navigating the result 
foreach(var g in result) 
{ 
    Console.WriteLine(g.Key); 
    foreach(var x in g) 
    { 
    Console.WriteLine(x.A.aId); 
    Console.WriteLine(x.B.bId); 
    } 
} 
+0

Arbeitete wie ein verfluchter Charme! Vielen Dank! : D – sooprise

+0

Ich vermisste immer den 'neuen {A = a, B = b}' Teil ... Funktioniert super, danke! – z00l

0

Ihr result Objekt wird ein IQueryable<IGrouping<T>> sein, so würden Sie eines der Ergebnisse Sammlung zugreifen müssen, die IGrouping<T> sein wird, und dann graben sich in dass Sammlung die x Objekte zu erhalten.

Verwandte Themen