2009-10-14 21 views
10

Với thiết lập mã sau:Chọn các giá trị khác biệt trong tất cả các bộ sưu tập lồng nhau bằng cách sử dụng LINQ cho các đối tượng?

public class Foo { 
List<string> MyStrings { get; set; } 
} 

List<Foo> foos = GetListOfFoosFromSomewhere(); 

Làm thế nào để có được một danh sách của tất cả các chuỗi riêng biệt trong MyStrings trên tất cả các trường hợp Foo sử dụng LINQ? Tôi cảm thấy như thế này là dễ dàng, nhưng không thể tìm ra nó.

string[] distinctMyStrings = ? 

Trả lời

14
// If you dont want to use a sub query, I would suggest: 

     var result = (
      from f in foos 
      from s in f.MyStrings 
      select s).Distinct(); 

     // Which is absoulutely equivalent to: 

     var theSameThing = foos.SelectMany(i => i.MyStrings).Distinct(); 

     // pick the one you think is more readable. 

Tôi cũng khuyên đọc MSDN trên phương pháp khuyến nông Enumerable. Nó rất thông tin và có những ví dụ tuyệt vời!

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