2009-12-08 24 views
70

sửa chữa cần thiết cho dụ 2 inorder để nhóm theo nhiều cộtLINQ Nhóm By Nhiều lĩnh vực -Syntax giúp

Ví dụ 1

var query = from cm in cust 
      group cm by new { cm.Customer, cm.OrderDate } into cms 
      select 
      new 
      { Key1 = cms.Key.Customer,Key2=cms.Key.OrderDate,Count=cms.Count() }; 

Ví dụ 2 (không chính xác)

là gì
var qry = 
    cust.GroupBy(p => p.Customer, q => q.OrderDate, (k1, k2, group) => 
    new { Key1 = k1, Key2 = k2, Count = group.Count() }); 

Trả lời

127

Sử dụng cùng một loại ẩn danh trong th e dot ký hiệu mà bạn làm trong các biểu thức truy vấn:

var qry = cust.GroupBy(cm => new { cm.Customer, cm.OrderDate }, 
      (key, group) => new { Key1 = key.Customer, Key2 = key.OrderDate, 
            Count = group.Count() }); 

(Trong một IDE thực tôi phải (key, group) lót lập theo thông số cm, nhưng sau đó nó sẽ quấn trong SO.)

+0

Jon, tôi luôn luôn sai lầm khi sử dụng phương pháp mở rộng, có cách nào dễ dàng để làm quen với không? – Udana

+0

@Udana: Tôi đã tìm thấy nó rất hữu ích để xem những gì trình biên dịch C# làm với các biểu thức truy vấn - nhưng tôi là một anh chàng dựa trên đặc tả. Nhìn vào tình trạng quá tải có sẵn và đọc tài liệu cũng giúp ích rất nhiều :) –

+0

@Jon Skeet: Quá tải này của 'GroupBy()' không có nhiều mô tả trong MSDN. Bạn có thể viết một dòng về nó không? – FMFF

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