2013-04-27 23 views
0

我有一個複雜的對象,其中包含2個更復雜的對象列表。如何使用LINQ查找子實體列表中包含另一個列表的實體

第一個目的是如下:

public object1 { 
     public string Name { get; set; } 
     public virtual ICollection<object2> objects2 { get; set; } 
     public virtual ICollection<object3> objects3 { get; set; } 
} 

凡爲Object2的和object3是相同的,具有ID和名稱字段。如:

public object { 
    public int ID{ get; set; } 
    public string Name { get; set; } 
} 

我想用ID列表/陣列(INT [] IDS)來搜索列表「object1的,這樣外地‘objects2’包含了所有的陣列o2_ids和‘objects3’所有的數組o3_ids(每個都是int [])。

回答

2
from o1 in obj1List 
where o2_ids.All(o2id => o1.objects2.Any(o2 => o2.ID == o2id)) 
&& o3_ids.All(o3id => o1.objects3.Any(o3 => o3.ID == o3id)) 
select o1 
+0

謝謝,但那不行。 'contains'期望類型爲'object2'或'object3'的對象,其中o2id/o3id是一個int。沒有引用object2或object3的ID的地方。你能修改嗎? – Roman 2013-04-27 13:24:23

+0

你說得對,對不起 - 我現在已經更新了使用'Any()'的謂詞。 – 2013-04-27 13:34:22

+0

完美 - 謝謝! – Roman 2013-04-27 18:07:18

相關問題