gpt4 book ai didi

c# - Lambda 表达式查找差异

转载 作者:太空狗 更新时间:2023-10-29 22:10:02 25 4
gpt4 key购买 nike

有以下数据

string[] data = { "a", "a", "b" };

我非常想找到重复项并得到这个结果:

a

我试过下面的代码

var a = data.Distinct().ToList();
var b = a.Except(a).ToList();

显然这不起作用,我可以看到上面发生了什么,但我不确定如何修复它。

最佳答案

当运行时没有问题,你可以使用

var duplicates = data.Where(s => data.Count(t => t == s) > 1).Distinct().ToList();

好老的 O(n^n) =)

编辑:现在寻求更好的解决方案。 =)如果您定义一个新的扩展方法,例如

static class Extensions
{

public static IEnumerable<T> Duplicates<T>(this IEnumerable<T> input)
{
HashSet<T> hash = new HashSet<T>();
foreach (T item in input)
{
if (!hash.Contains(item))
{
hash.Add(item);
}
else
{
yield return item;
}
}
}
}

你可以使用

var duplicates = data.Duplicates().Distinct().ToArray();

关于c# - Lambda 表达式查找差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3138651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com