【问题标题】:Determine if two collections share at least one element [duplicate]确定两个集合是否共享至少一个元素[重复]
【发布时间】:2013-04-09 12:05:37
【问题描述】:

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

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    您可以使用 Any()。

    var listA = new List<int>();
    var listB = new List<int>();
    
    bool hasCommonItem = listA.Any(i => listB.Contains(i));
    

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

    【讨论】:

      【解决方案2】:

      当然有。

      var sourceCollection = GetSourceCollection();
      var otherCollection = GetAnotherCollection();
      
      var hasAtLeastOne = sourceCollection.Intersect(sourceCollection).Any();
      

      我假设您的集合属于同一类型:IEnumerable&lt;T&gt; 具有相同的 T 泛型参数。

      它将首先加载整个sourceCollection,然后从otherCollection 一次获取一个元素,直到找到第一个公共元素。

      【讨论】:

      • @didierc 当然!更新了我的答案。感谢您的关注!
      【解决方案3】:
      col1.Any(x => col2.Any(y => x==y));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-04
        • 1970-01-01
        • 2019-12-20
        相关资源
        最近更新 更多