gpt4 book ai didi

c# - 一个或另一个列表中的一组值,但不是两个

转载 作者:行者123 更新时间:2023-11-30 12:11:46 26 4
gpt4 key购买 nike

我正在比较两个字典,我想要 or 或其他字典中的所有键的集合,但不是两个(我不关心顺序)。由于这只涉及键,我们可以使用字典键的 IEnumerables 来完成。

简单的方法,涉及 2 遍:

return first.Keys.Except(second.Keys).Concat(second.Keys.Except(first.Keys));

我们可以连接,因为 Excepts 保证列表将完全不同。

但我觉得有更好、更简洁的方法来做到这一点。

最佳答案

我更喜欢非 LINQy 方式:

var set = new HashSet<KeyType>(first.Keys);
set.SymmetricExceptWith(second.Keys);

这是您的 LINQy 替代方法(但不是更好):

var result = first.Keys.Union(second.Keys)
.Except(first.Keys.Intersect(second.Keys));

如果您正在寻找(可能)性能更高的东西:

var result = new HashSet<KeyType>();

foreach(var firstKey in first.Keys)
{
if(!second.ContainsKey(firstKey))
result.Add(firstKey);
}

foreach(var secondKey in second.Keys)
{
if(!first.ContainsKey(secondKey))
result.Add(secondKey);
}

关于c# - 一个或另一个列表中的一组值,但不是两个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14708358/

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