我有一个名为com的列表,其中包含一堆整数。我需要检查列表以确保每个整数仅在列表中存在一次。 所以如果:
com{1,2,3,4,1,3}
我需要一些代码来检查1代表2和3代表。 这是我对如何解决它的最佳猜测:
for (int j = 0; j < com.Count; j++)
{
if (com.Contains(com[j]))
{
lion += 1;
}
else
{
lion = 0;
}
}
但它不起作用。有人可以帮帮我吗?
答案 0 :(得分:6)
这是使用LINQ的简单但可能不那么有效的方式:
using System.Linq;
...
bool containsRepeats = com.Count() != com.Distinct().Count();
答案 1 :(得分:2)
您可以通过将每个项目添加到HashSet<T>来确定集合是否包含重复项。如果项目已存在,HashSet<T>.Add Method将返回false:
public static bool HasDuplicate<T>(this IEnumerable<T> source)
{
var h = new HashSet<int>();
return source.Any(x => !h.Add(x));
}
如果您只想删除集合中的所有重复项,可以使用Enumerable.Distinct Extension Method:
var result = new[] { 1, 2, 3, 4, 1, 3 }.Distinct();
// result == { 1, 2, 3, 4 }
答案 2 :(得分:1)
你可以这样试试..
int[] listOfItems = new[] { 4, 2, 3, 1, 6, 4, 3 };
var duplicates = listOfItems
.GroupBy(i => i)
.Where(g => g.Count() > 1)
.Select(g => g.Key);
foreach (var d in duplicates)
Console.WriteLine(d);