可以使用Linq解决AND / OR场景?

时间:2013-03-22 08:38:39

标签: c# linq

我有一个特定的场景,我想用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是否正确?

1 个答案:

答案 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