2011-11-09 59 views
10

我试图从linq中的集合中选择一个基于该集合的对象上的id。从列表中选择Lambda或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}); 

我想要的是,与波长/ LINQ,是让所有与主ID = 2的对象。

在这个结构中使用它的senario im是一个mongodb。

感谢,

回答

10

SelecMany将扁平化的分级列表,以一个大的顺序列表,然后Where将根据您的情况进行过滤。

2

你可以这样说:

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

您可以使用此:

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