从列表中选择Lambda或linq

时间:2011-11-09 13:31:47

标签: c# linq mongodb lambda

我试图根据该集合对象的id从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 个答案:

答案 0 :(得分:10)

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

SelecMany会将分层列表展平为一个大的顺序列表,然后Where将根据您的情况进行过滤。

答案 1 :(得分:3)

你可以这样做:

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

答案 2 :(得分:0)

您可以使用:

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