我有一个方法如下.当列表包含重复项时,方法返回false/true.我想扩展我的方法,例如(可选)我想从检查中排除特定项目.例如,我想检查整个列表,因为它现在或我想说例如exclude:string.empty items或例如string.empty和"some word".可能吗?
public static bool IsListContainsDuplicates<T>(List<T> list)
{
return list.GroupBy(n => n).Any(c => c.Count() > 1);
}
Run Code Online (Sandbox Code Playgroud)
public static bool ContainsDuplicates<T>(this IEnumerable<T> items, IEnumerable<T> itemsToExclude = null)
{
if (itemsToExclude == null) itemsToExclude = Enumerable.Empty<T>();
return items.Except(itemsToExclude)
.GroupBy(n => n)
.Any(c => c.Count() > 1);
}
Run Code Online (Sandbox Code Playgroud)
但我更喜欢这种实现方式,因为它更具性能:
public static bool ContainsDuplicates<T>(this IEnumerable<T> items, IEnumerable<T> itemsToExclude = null)
{
if (itemsToExclude == null) itemsToExclude = Enumerable.Empty<T>();
HashSet<T> set = new HashSet<T>();
return !items.Except(itemsToExclude).All(set.Add);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |