确定两个集合是否共享至少一个元素

时间:2013-04-09 12:05:37

标签: c# linq

有没有办法确定一个集合是否包含来自另一个集合的至少一个元素?

3 个答案:

答案 0 :(得分:9)

您可以使用Any()。

var listA = new List<int>();
var listB = new List<int>();

bool hasCommonItem = listA.Any(i => listB.Contains(i));

此外,如果需要,您可以编写IEqualityComparer实现将其作为参数传递给Contains()。

答案 1 :(得分:8)

当然有。

var sourceCollection = GetSourceCollection();
var otherCollection = GetAnotherCollection();

var hasAtLeastOne = sourceCollection.Intersect(sourceCollection).Any();

我认为您的集合属于同一类型:IEnumerable<T>具有相同的T通用参数。

首先加载整个sourceCollection,然后从otherCollection一次获取一个元素,直到找到第一个常见元素。

答案 2 :(得分:0)

col1.Any(x => col2.Any(y => x==y));