2009-10-14 11 views
10

Biorąc pod uwagę następującą konfigurację kodu:Wybierz różne wartości we wszystkich zagnieżdżonych kolekcjach, używając LINQ do obiektów?

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

List<Foo> foos = GetListOfFoosFromSomewhere(); 

Jak mogę uzyskać listę wszystkich odrębnych ciągów w MyStrings we wszystkich przypadkach Foo przy użyciu LINQ? Czuję, że to powinno być łatwe, ale nie mogę tego rozgryźć.

string[] distinctMyStrings = ? 

Odpowiedz

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. 

ja też zalecamy czytanie MSDN na przeliczalne metod rozszerzenie. Jest bardzo pouczający i ma świetne przykłady!

Powiązane problemy