2010-05-20 13 views
9

Mam dwie tabeledostęp do wszystkich danych po dołączeniu dwóch tabel i grupa je za pomocą LINQ

TableA 
aId 
aValue 

TableB 
bId 
aId 
bValue 

chcę połączyć te dwie tabele poprzez aId, a stamtąd, grupy je 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}; 

Mój kod nie rozpoznaje łączenia po grupie. Innymi słowy, zgrupowanie działa, ale sprzężenie nie działa (lub przynajmniej nie mogę wymyślić, jak uzyskać dostęp do wszystkich danych po złączeniu).

Odpowiedz

21

Wyrażenie między group i by tworzy elementy grupy.

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

Pracował jak pieprzony urok! Dzięki wielkie! : D – sooprise

+0

Zawsze brakowało mi "nowej części {A = a, B = b}" ... Działa świetnie, dziękuję! – z00l

0

Twój result obiekt będzie IQueryable<IGrouping<T>>, więc trzeba by uzyskać dostęp do jednego zbioru wyników, które będą IGrouping<T>, a następnie kopać w tym kolekcji uzyskać x obiektów.

Powiązane problemy