Выберите из списка Lambda или Linq - PullRequest
10 голосов
/ 09 ноября 2011

Я пытаюсь выбрать из коллекции в linq на основе идентификатора объекта из этой коллекции.

List<List<myobject>> master = new List<List<myobject>>();
List<myobject> m1 = new List<myobject>();
List<myobject> m2 = new List<myobject>();


master.Add(m1);
master.Add(m2);
m1.Add(new myobject{name="n1",id=1});
m1.Add(new myobject{name="n2",id=2});
m1.Add(new myobject{name="n3",id=3});

m2.Add(new myobject{name="m1",id=1});
m2.Add(new myobject{name="m2",id=2});
m2.Add(new myobject{name="m3",id=3});

Что я хочу, так это с lambda / linq, чтобы получить все объекты сid = 2 от мастера.

Senario, который я использую это в, - это mongodb с этой структурой.

Спасибо,

Ответы [ 3 ]

10 голосов
/ 09 ноября 2011
var result = master.SelectMany(n => n).Where(n => n.id == 2);

SelecMany сведет иерархический список в один большой последовательный список, а затем Where отфильтрует по вашему состоянию.

3 голосов
/ 09 ноября 2011

Вы можете сделать это так:

var result = master.SelectMany(m => m).Where(mo => mo.id == 2);
0 голосов
/ 09 ноября 2011

Вы можете использовать это:

var result = (from list in master from element in list where element.id == 2 select element);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...