Выберите из списка Lambda или linq

Я пытаюсь выбрать из коллекции в 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 от мастера.

Сенарио im, использующее это, является mongodb с этой структурой.

Спасибо,

Ответ 1

var result = master.SelectMany(n => n).Where(n => n.id == 2);

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

Ответ 2

Вы можете сделать это следующим образом:

var result = master.SelectMany(m => m).Where(mo => mo.id == 2);

Ответ 3

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

var result = (from list in master from element in list where element.id == 2 select element);