0

我有一个想要使用 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))

当然,在我的场景中,这些集合可能会变得更大。

根据特定的 AND/OR 规则,我将如何在 LINQ 中解决这个问题,以查看我的集合 C 是否正确?

4

1 回答 1

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

于 2013-03-22T08:46:31.320 回答