2009-08-04 13 views
5

Mam obiekt, który zawiera tablicę ciągów jako jedną z ich właściwości. Chcę uzyskać wyraźną tablicę ciągów znaków zawierającą wszystkie wartości.LINQ - Wybierz wszystkie elementy podrzędne z hierarchii obiektów

Mój obiekt wygląda tak:

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

Niektóre ogrody zoologiczne mogą mieć tylko jedno zwierzę, niektórzy mogą mieć wiele. Jaka byłaby najprostsza wyraŜenie Lambda lub zapytanie LINQ, aby uzyskać unikalną listę wszystkich zwierząt w wszystkich ogrodach zoologicznych w List<Zoo>?

Odpowiedz

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

Lub jeśli jesteś fanem wyrażenie kwerendy (I nie byłoby to coś prostego):

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

Dzięki, Jon. Typo z mojej strony. –

+0

Gdzie było literówka? Musiałem to przegapić :) –

+4

Literówka była w mojej aplikacji. Nie mogę się doczekać, aż pojawi się dodatek StackOverflow do Visual Studio, abyś mógł naprawić moje aplikacje podczas pracy. :-) –

Powiązane problemy