2009-11-25 50 views
31

Tôi đã có một truy vấn T-SQL tương tự như sau:LINQ nhóm theo cú pháp biểu hiện

SELECT r_id, r_name, count(*) 
FROM RoomBindings 
GROUP BY r_id, r_name 

Tôi muốn làm điều tương tự sử dụng LINQ. Cho đến nay tôi đã ở đây:

var rooms = from roomBinding in DALManager.Context.RoomBindings 
         group roomBinding by roomBinding.R_ID into g 
         select new { ID = g.Key }; 

Làm cách nào để trích xuất phần (*) và phần r_name?

Trả lời

53

Hãy thử điều này:

var rooms = from roomBinding in DALManager.Context.RoomBindings 
         group roomBinding by new 
         { 
          Id = roomBinding.R_ID, 
          Name = roomBinding.r_name 
         } 
         into g 
         select new 
         { 
          Id = g.Key.Id, 
          Name = g.Key.Name, 
          Count = g.Count() 
         }; 

Sửa bởi Nick - Thêm cú pháp chuỗi phương pháp để so sánh

var rooms = roomBinding.GroupBy(g => new { Id = g.R_ID, Name = g.r_name }) 
         .Select(g => new 
          { 
           Id = g.Key.Id, 
           Name = g.Key.Name, 
           Count = g.Count() 
          }); 
+1

+1 giải pháp tốt đẹp –

+0

sạch và đơn giản. – mcfea

Các vấn đề liên quan