2009-08-04 34 views
5

Tôi có một số List của các đối tượng có chứa một mảng chuỗi là một trong các thuộc tính của chúng. Tôi muốn nhận được một mảng chuỗi riêng biệt chứa tất cả các giá trị.LINQ - Chọn tất cả trẻ em từ một hệ thống phân cấp đối tượng

đối tượng của tôi trông như thế này:

public class Zoo { 
    string Name { get; set;} 
    string[] Animals { get; set;} 
} 

Một số vườn thú có thể chỉ có một con vật, một số có thể có nhiều. Điều gì sẽ là biểu thức Lambda đơn giản nhất hoặc truy vấn LINQ để đưa cho tôi một danh sách duy nhất của tất cả các động vật ở tất cả các Sở thú trong List<Zoo>?

Trả lời

12
var query = zoos.SelectMany(zoo => zoo.Animals) 
       .Distinct(); 

Hoặc nếu bạn là một fan hâm mộ biểu thức truy vấn (tôi sẽ không cho một cái gì đó đơn giản này):

var query = (from zoo in zoos 
      from animal in zoo.Animals 
      select animal).Distinct(); 
+0

Cảm ơn, Jon. Typo về phía tôi. –

+0

Lỗi đánh máy ở đâu? Tôi phải đã bỏ lỡ nó :) –

+4

Các lỗi đánh máy là trong ứng dụng của tôi. Tôi không thể chờ đợi cho đến khi addin StackOverflow cho Visual Studio đi ra để bạn có thể sửa chữa các ứng dụng của tôi khi tôi làm việc. :-) –

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