【问题标题】:Comparing elements inside a list in c#c# 比较列表中的元素
【发布时间】:2016-12-09 11:29:43
【问题描述】:

我想在C# 中的单个List 中添加compare 元素。我需要检查 list 中是否有相同的数据。有人可以帮我解决这个问题吗?

【问题讨论】:

  • 到目前为止有什么尝试?
  • bool contains = list.Any(item => condition(item));
  • 您想获得一份关于是否有重复项目的报告,还是清除重复项目? stackoverflow.com/questions/489258/…

标签: c# list


【解决方案1】:

你可以试试这个,例如:

var collection = new List<double>(new double[] { 10, 20, 11, 10, 20, 44 });
var info = collection.GroupBy(e => e).ToDictionary(e => e.Key, e => e.Count());

这里info 包含一个double 值作为key 和这个数字在collection 中作为value

这种结构可以用于任何类型的List 元素。

【讨论】:

    【解决方案2】:

    您可以使用 LINQ 扩展方法

    这是一个 LINQ 比较列表的示例:

       list<string>  arr1 = new list<string>(){ "A", "b", "C," };
       list<string>  arr2 = new list<string>(){ "A", "b", "C," };
    

    将上述数组与 SequentialEqual() 方法进行比较

    bool result = arr3.SequentialEqual(arr2);
    

    布尔结果将包含 true,因为两个列表中的项目相等

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      如果您只想知道列表中是否有多个项目具有相同的值,您可以使用此功能..

      public bool HasSameData<T>(List<T> myList)
      {
          return myList.Distinct().Count() != myList.Count();
      }
      

      请注意,这适用于任何类型。

      void Main()
      {
          var myList = new List<int> {1,2,3,4,5,6,7,8,9};
          var myList2 = new List<int> {1,1,3,4,5,6,7,8,9};
      
          Console.WriteLine(HasSameData(myList));
          Console.WriteLine(HasSameData(myList2));
      
          var myList3 = new List<String> {"hello","world","foo","bar"};
          var myList4 = new List<String> {"hello","foo","foo","bar"};
      
          Console.WriteLine(HasSameData(myList3));
          Console.WriteLine(HasSameData(myList4));
      
          Console.ReadLine();
      }
      

      输出:

      False
      True
      False
      True
      

      【讨论】:

        猜你喜欢
        • 2015-09-30
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 2020-02-21
        • 2020-09-20
        • 1970-01-01
        相关资源
        最近更新 更多