2011-11-09 38 views
10

Tôi đang cố gắng chọn từ bộ sưu tập trong LINQ dựa trên id trên đối tượng của bộ sưu tập đó.Chọn từ danh sách Lambda hoặc 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}); 

Điều tôi muốn là, với lambda/linq, là lấy tất cả các đối tượng có id = 2 từ bản gốc.

Senario im sử dụng này trong là một mongodb với cấu trúc này.

Cảm ơn,

Trả lời

10

SelecMany sẽ san bằng danh sách thứ bậc với một danh sách tuần tự lớn và sau đó Where sẽ lọc cho điều kiện của bạn.

2

Bạn có thể làm điều đó như thế này:

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

Bạn có thể sử dụng này:

var result = (from list in master from element in list where element.id == 2 select element); 
Các vấn đề liên quan