如何查找是否List<string>有重复值?
我试过下面的代码.有没有最好的方法来实现?
var lstNames = new List<string> { "A", "B", "A" };
if (lstNames.Distinct().Count() != lstNames.Count())
{
Console.WriteLine("List contains duplicate values.");
}
Run Code Online (Sandbox Code Playgroud)
Son*_*nül 99
尝试使用GroupBy和Any喜欢;
lstNames.GroupBy(n => n).Any(c => c.Count() > 1);
Run Code Online (Sandbox Code Playgroud)
GroupBy 方法;
根据指定的键选择器函数对序列的元素进行分组,并使用指定的函数为每个组投影元素.
Any方法,它返回boolean;
确定序列的任何元素是否存在或满足条件.
Raw*_*ing 45
如果您正在寻找最有效的方法,
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;
}
}
Run Code Online (Sandbox Code Playgroud)
一旦找到第一个副本就会停止.如果您要在多个地方使用它,可以将它包装在方法(或扩展方法)中.
Zol*_*ási 25
基于哈希技术的答案的通用和紧凑扩展版本:
public static bool AreAnyDuplicates<T>(this IEnumerable<T> list)
{
var hashset = new HashSet<T>();
return list.Any(e => !hashset.Add(e));
}
Run Code Online (Sandbox Code Playgroud)
Nas*_*eer 11
var duplicateExists = lstNames.GroupBy(n => n).Any(g => g.Count() > 1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80985 次 |
| 最近记录: |