2012-01-04 22 views
27

Mam bardzo prostego zapytania SQLGrupa wielu tabel w LINQ

Select r.SpaceID,Count(*), SpaceCode from Rider r join Spaces s 
on r.SpaceID=s.SpaceID 
Group By r.SpaceID, s.SpaceCode 

Należy pamiętać, że moja grupa przez klauzuli jest na wielu stołach, chcę zrobić to samo w LINQ, wiem jak grupa pojedyncza tabela , ale o wielu tabelach nie mam pojęcia.

+0

prostu zobaczyć tutaj: http: // stackoverflow. com/questions/3435485/linq-group-by-multiple-tables –

+0

Dzięki, już to widziałem, ale Concat nie wydaje się dobrym rozwiązaniem, ponadto struktura dla obu moich tabel jest zbyt odmienna, s o to mi się nie przyda, – MegaMind

Odpowiedz

52

do grupowania wielu tabel można zrobić tak:

group new { r,s } by new { r.SpaceID, s.SpaceCode } 
+1

Wielkie dzięki Pankaj, działa to jak wdzięk – MegaMind

+0

Powitanie @MegaMind. –

25

to może pomóc:

(
    from r in db.Rider 
    join s in db.Spaces 
     on r.SpaceID equals s.SpaceID 
    group new { r,s } by new { r.SpaceID, s.SpaceCode } 
    into grp 
    select new 
    { 
     Count=grp.Count(), 
     grp.Key.SpaceID, 
     grp.Key.SpaceCode 
    } 
) 

Gdzie db jest kontekst w bazie

+1

Wybierz część powinna być: 'wybrać nowy { count = grp.Count(), grp.Key.SpaceID, grp.Key.SpaceCode }' –

+0

Ów prawdziwy. Zaktualizowałem rozwiązanie: – Arion

+0

@Arion: Poprawka Petra Behensky'ego nadal nie pojawia się w twoim rozwiązaniu. – Buggieboy