我是C#的初学者,所以我有一个问题,我的数据库中有很多名字我的问题是如何制作显示LINQ中没有双打的名字数据的脚本? 这是一个例子:
string[] names = {hello, hello, stack, stack, overflow, overflow};
我不知道如何做到这一点可以有人创建一个简单的脚本,告诉它该怎么做。我自己可以解决其余问题。
答案 0 :(得分:7)
你走了:
string[] names = {"hello", "hello", "stack", "stack", "overflow", "overflow"};
var distinctNames = names.Distinct();
foreach(String distinctName in distinctNames)
Console.WriteLine(distinctName);
答案 1 :(得分:3)
我认为这也应该有用;
names.Distinct().ToList().ForEach( n => Console.WriteLine(n));
答案 2 :(得分:1)
您可以使用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);
答案 3 :(得分:0)
尽管某些答案被标记为已接受,但我认为我可以添加一些关于意外问题的重要信息,您可以在阵列中有对象的情况下遇到这些信息,并且需要区别对待基于该对象的某些属性。
LINQ的Distinct()函数在这种情况下可能无法正常工作,所以你应该使用这样的解决方法(它会给你相同的结果):
var elems = someArray.GroupBy(x=>x.RpopertyToCompare).Select(y=>y.First());
您可以在此处阅读更多内容:http://blog.jordanterrell.com/post/LINQ-Distinct()-does-not-work-as-expected.aspx
答案 4 :(得分:0)
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
}