2011-01-27 3 views
1

List<string[]>에 나타나는 문자열을 제외하고 List<string>에 나타나는 모든 문자열을 가져 오는 방법은 어떻게됩니까? 나는 그들이목록에있는 문자열을 얻으십시오 <String[]>

IEnumerable<string> list3 = List1.Except(List2); 

을 수행하여 모두 List<string>을 경우 작동이 얻을 수 그러나 나는 그것이 하나의 IEnumerable<string>List<string[]>를 평평하게 당신은 SelectMany를 사용해야합니다 list2

답변

6

대신에 List<string[0]>을 사용하여이 작업을 수행하는 방법을 알아낼 수 없습니다 . list2 가정하면 유형 List<string[]>의, 당신은 할 수 있습니다 :

var list3 = list1.Except(list2.SelectMany(x=>x)); 

을하지만, 당신은 단지 다음 List<string[]>의 첫 string[]를 원하는 경우, 목록에서 하나 개 이상의 항목이 가정, 당신은 할 수 :

var flattenedList2 = from x in list2 
        from y in x 
        select x; 
: 추가
list2.SelectMany(x=>x)
var list3 = list1.Except(list2.First()); 

은 동등하다

+0

동의, 나를 이길 :) –

+0

이것은 작동하는 것으로 보입니다, 그러나 나는 거의 무슨 일이 일어나는지 알지 못합니다. 감사. –

+0

@Joe :이 경우'SelectMany'는 각'string []'을 취해 그 내용을 결합합니다. 이것은'from x from list2 in from x select x'와 동일합니다. –

관련 문제