Ответ 1
var result = master.SelectMany(n => n).Where(n => n.id == 2);
SelecMany
сгладит иерархический список в один большой последовательный список, а затем Where
будет фильтровать ваше условие.
Я пытаюсь выбрать из коллекции в 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 с этой структурой.
Спасибо,
var result = master.SelectMany(n => n).Where(n => n.id == 2);
SelecMany
сгладит иерархический список в один большой последовательный список, а затем Where
будет фильтровать ваше условие.
Вы можете сделать это следующим образом:
var result = master.SelectMany(m => m).Where(mo => mo.id == 2);
Вы можете использовать это:
var result = (from list in master from element in list where element.id == 2 select element);