如何使用LINQ从数组中删除重复项

本文关键字:删除 数组 何使用 LINQ | 更新日期: 2023-09-27 18:01:33

我是c#的初学者,所以我有一个问题,我在我的数据库中有很多名字,我的问题是我如何制作脚本,显示名字的数据在LINQ中没有double ?下面是一个例子:

string[] names = {hello, hello, stack, stack, overflow, overflow};

我不知道如何做到这一点,有人可以创建一个简单的脚本,显示它如何做。剩下的我可以自己解决

如何使用LINQ从数组中删除重复项

给你:

string[] names = {"hello", "hello", "stack", "stack", "overflow", "overflow"};  
var distinctNames = names.Distinct();
foreach(String distinctName in distinctNames) 
    Console.WriteLine(distinctName);

我想这应该也可以;

names.Distinct().ToList().ForEach( n => Console.WriteLine(n));

可以使用Distinct

试试这个:

string[] names = {"hello", "hello", "stack", "stack", "overflow", "overflow"};
var uniqueNames = (from c in names select c).Distinct();
foreach(String s in uniqueNames) Console.WriteLine(uniqueNames);

尽管有些答案被标记为接受,但我认为我可以添加一些关于意外问题的重要信息,您可以在数组中有对象的情况下遇到这些问题,并且您需要根据该对象的某些属性进行区分。

在这种情况下,LINQ的Distinct()函数可能无法正常工作,所以你应该使用这样的解决方案(它会给你相同的结果):
var elems = someArray.GroupBy(x => x.PropertyToCompare).Select(y => y.First());

您可以在这里阅读更多内容:http://blog.jordanterrell.com/post/LINQ-Distinct()-does-not-work-as-expected.aspx

var duplicates = suppliers_arr
    .GroupBy(i => i)
    .Where(g => g.Count() > 1)
    .Select(g => g.Key); 
if(duplicates.Count() > 0){
    foreach (var d in duplicates)
    {
        ModelState.AddFormError(string.Format("{0} is duplicated",d.ToString()));
    }
}else{
     //no duplicates
}