2013-05-04 3 views
0

У меня есть следующие списки:Содержит в Linq объект?

var list1 = new List<string> {"m1", "m2", "m3"}; 
var list2 = new List<List<string>> 
    { 
     new List<string>{"m1", "m2", "m3"},//1 
     new List<string>{"m1", "m2", "m3", "m4", "m5"},//2 
     new List<string>{"m4", "m5", "m3", "m45", "m35"},//3 
     new List<string>{"m1", "m36", "m43", "m54", "m54"},//4 
     new List<string>{"m2", "m4", "m3", "m44", "m55"}//5 
    }; 

Я хочу выбрать каждый список list2, который содержит все элементы list1.
Как мы должны это делать в оптимизируют пути

ответ

2

Вы могли бы использовать Except и Any методы:

var results = list2.Where(x => !list1.Except(x).Any()) 
2
list2.Where(l2 => list1.Intersect(l2).Count()==list1.Count) 
+1

+1 Это будет работать тоже, хотя я до сих пор предпочитаю 'Any()' для производительности. –

Смежные вопросы