2009-10-14 4 views
10

다음 코드를 설정하면 :개체에 LINQ를 사용하여 중첩 된 모든 컬렉션에서 고유 값을 선택 하시겠습니까?

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

List<Foo> foos = GetListOfFoosFromSomewhere(); 

LINQ를 사용하여 모든 Foo 인스턴스에서 MyString의 모든 고유 문자열리스트를 얻으려면 어떻게해야합니까? 나는 이것이 쉬운 것처럼 느껴진다. 그러나 그것을 아주 이해할 수 없다.

string[] distinctMyStrings = ? 

답변

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. 

나는 또한 강하게 Enumerable에서 확장 메서드에 MSDN을 읽어 보시기 바랍니다. 매우 유익하고 훌륭한 사례가 있습니다!

관련 문제