2012-01-04 36 views
27

Tôi có một truy vấn SQL rất đơn giảnNhóm Nhiều Bàn trong LINQ

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

Xin lưu ý rằng nhóm của tôi bởi khoản trên nhiều bảng, tôi muốn làm điều tương tự trong LINQ, tôi biết làm thế nào để nhóm bảng duy nhất , nhưng về nhiều bảng tôi không có ý tưởng.

+0

Chỉ cần thấy ở đây: http: // stackoverflow. com/questions/3435485/linq-group-by-nhiều-bảng –

+0

Cảm ơn, tôi đã thấy điều đó, nhưng Concat không có vẻ giống như một lựa chọn tốt, hơn nữa cấu trúc cho cả hai bảng của tôi là quá khác nhau, s o điều này sẽ không hiệu quả đối với tôi, – MegaMind

Trả lời

52

Đối với nhóm nhiều bảng bạn có thể làm như sau:

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

Cảm ơn Big Pankaj, công trình này giống như một sự quyến rũ – MegaMind

+0

Chào mừng @MegaMind. –

25

này có thể giúp:

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

đâu db là bối cảnh cơ sở dữ liệu

+1

Chọn phần nên là: 'chọn mới { Đếm = grp.Count(), grp.Key.SpaceID, grp.Key.SpaceCode } ' –

+0

Thats đúng. Tôi đã cập nhật giải pháp – Arion

+0

@Arion: Hiệu chỉnh của Petr Behensky vẫn không xuất hiện trong giải pháp của bạn. – Buggieboy