2014-04-04 2 views
1

과 다른 T 가져 오기 IEnumerable<IEnumerable<T>> 개체가 있다고 가정하면이 개체에서 고유 T 목록을 가져 오는 가장 간결한 방법은 무엇입니까?C# : IEnumerable <IEnumerable <T>>

샘플 코드 : 결과를

a, b, c, f, g, h, j, k, l 

답변

10

당신은를 IEnumerable Enumerable.SelectMany

프로젝트 시퀀스의 각 요소를 필요로하고 평평 :

var listOfLists = new List<List<string>>(); 

listOfLists.Add(new string[] {"a", "b", "c", "c"}.ToList()); 
listOfLists.Add(new string[] {"a", "f", "g", "h"}.ToList()); 
listOfLists.Add(new string[] {"j", "k", "l"}.ToList()); 

List<string> distinctList = listOfLists.MagicCombinationOfEnumerableMethods(); 

Console.WriteLine(string.Join(", ", distinctList)); 

출력 뭔가 같은 것 시퀀스를 하나의 시퀀스로 구성

List<string> distinctList = listOfLists.SelectMany(r => r).Distinct().ToList(); 

당신은 또한 같은 목록에 요소를 추가하는 코드를 수정할 수 있습니다

listOfLists.Add(new List<string> {"a", "b", "c", "c"}); 

을 대신 배열을 만든 다음 목록에 변환.

관련 문제