2011-11-09 14 views
10

Im tratando de seleccionar de una colección en linq basada en una identificación en un objeto de esa colección.Seleccionar de la lista Lambda o 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}); 

Lo que quiero es que, con lambda/linq, consiga todos los objetos con id = 2 del maestro.

El senario im que usa esto es un mongodb con esta estructura.

Gracias,

Respuesta

10

SelecMany aplanará la lista jerárquica a una gran lista secuencial , y luego Where filtrará por su condición.

2

usted puede hacerlo de esta manera:

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

Se puede utilizar esta:

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