我有一个特定的场景,我想用LINQ解决,但我被卡住了。我希望有人可以给我一个例子或一些关于如何解决这个问题的指示。我对LINQ很新。
我有两个包含相同类型对象的集合(对于该示例,哪种对象并不重要)。
收藏品A包含'A11'和'A12'。
收藏B包含'B11'和'B12'。
我有第三个集合,应根据以下规则包含上述元素的子集:
(1 element of B AND (A11 OR A12))
因此,如果我写出所有可能性,那么这将成为:
(B11 AND (A11 OR A12))
(B12 AND (A11 OR A12))
在我的场景中,这些收藏可能会变得更大。
我如何在LINQ中解决这个问题,根据特定的AND / OR规则查看我的集合C是否正确?
答案 0 :(得分:2)
您可以将它分成两个单独的linq查询并将它们组合起来
if(collectionC.Intersect(collectionA).Any() && collectionC.Intersect(collectionB).Any())
当collectionC包含至少一个来自collectionA且至少一个来自collectionB
时,这将是真实的如果您想要更多控制计数,可以替换
.Any()
每个集合上的
Count() > 0
有关交叉操作的更多信息 http://code.msdn.microsoft.com/LINQ-Set-Operators-374f34fe#intersect1