如何判断List<string>
是否有重复值?
我试着用下面的代码。有什么最好的方法来实现吗?
var lstNames = new List<string> { "A", "B", "A" };
if (lstNames.Distinct().Count() != lstNames.Count())
{
Console.WriteLine("List contains duplicate values.");
}
发布于 2013-01-16 16:50:56
发布于 2013-01-16 16:55:09
如果您正在寻找最有效的方法,
var lstNames = new List<string> { "A", "B", "A" };
var hashset = new HashSet<string>();
foreach(var name in lstNames)
{
if (!hashset.Add(name))
{
Console.WriteLine("List contains duplicate values.");
break;
}
}
将在找到第一个副本时立即停止。如果您要在多个地方使用它,则可以将其封装在一个方法(或扩展方法)中。
发布于 2013-11-11 16:42:08
基于散列技术的答案的广义紧凑扩展版本:
public static bool AreAnyDuplicates<T>(this IEnumerable<T> list)
{
var hashset = new HashSet<T>();
return list.Any(e => !hashset.Add(e));
}
https://stackoverflow.com/questions/14363424
复制相似问题