2012-06-14 42 views
6

Tôi đã cố gắng tham gia và sau đó là một nhóm, thông tin được nhóm của tôi được trả về là tuyệt vời! hoạt động như một nét duyên dáng, nhưng tôi vẫn cần truy cập vào các giá trị bên ngoài nhóm, nếu điều đó làm cho tinh thần ..Nhóm theo nhiều bảng và vẫn có quyền truy cập vào truy vấn gốc?

Tôi tìm thấy một ví dụ về stackoverflow, mà có lẽ giải thích nó tốt hơn

var query = from c in context.Contacts 
      join o in context.Orders on c.Id equals o.CustomerId 
      select new 
      { 
       Contact = c, 
       Order = o 
      } into ContactAndOrder 
      group ContactAndOrder by ContactAndOrder.Order.Id into g 
      select new 
      { 
       g.Key, 
       ContactWhatever = g.Sum(co => co.Contact.Whatever), 
       OrderWhatever = g.Sum(co => co.Order.Whatever) 
      }; 

Bây giờ điều này dường như làm việc tuyệt vời, vấn đề là trong tình huống của tôi co.Order.Whatever là một chuỗi vì vậy tôi nhận được một lỗi nói rằng không thể chuyển đổi chuỗi để int, điều này tôi hiểu là tổng hợp chức năng Sum hy vọng một int ....

câu hỏi thực sự là, có một chức năng tổng hợp hoặc một cái gì đó tương tự như tôi có thể nhận được giá trị của co.Order.Whatever (một chuỗi trong trường hợp của tôi)

Vấn đề con người là một lần các nhóm bằng đã được thực hiện tôi mất "c" và "o"

Tôi hy vọng ai đó có thể giúp đỡ.

cảm ơn trước

+0

là gì bạn sẽ làm gì với 'co.Order.Whatever'? – Andrei

+0

Tôi chỉ muốn in giá trị .... giá trị sẽ luôn giống nhau đối với bản ghi được nhóm ... – Martin

Trả lời

0

nếu nó luôn luôn giống nhau trong nhóm, đầu tiên sẽ là đủ ...

ContactWhatever = g.First().Contact.Whatever 

khác sử dụng @Andrei trả lời hoặc

ContactWhatever = g.Select(o => o.Contact.Whatever).Aggregate((a,b) => a + "," + b) 
Các vấn đề liên quan