在c#中比较列表中的元素

时间:2016-12-09 11:29:43

标签: c# list

我想在compare中的ListC#个元素。我需要检查列表中是否有相同的数据。有人可以帮我吗?

3 个答案:

答案 0 :(得分:0)

您可以尝试这样做,例如:

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包含key的双精度值和collectionvalue的此数字的编号。

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

答案 1 :(得分:-1)

您可以使用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,因为两个列表中的项均相等

希望这有帮助

答案 2 :(得分:-1)

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

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