gpt4 book ai didi

c# - 如何在 C# 中比较两个字典

转载 作者:IT王子 更新时间:2023-10-29 04:31:50 32 4
gpt4 key购买 nike

我有两个通用词典。两者具有相同的键,但它们的值可以不同。我想比较第二本词典和第一本词典。如果它们的值之间存在差异,我想将这些值存储在单独的字典中。

1st Dictionary
------------
key Value

Barcode 1234566666
Price 20.00


2nd Dictionary
--------------
key Value

Barcode 1234566666
Price 40.00


3rd Dictionary
--------------
key Value

Price 40

谁能给我最好的算法来做到这一点?我写了一个算法,但它有很多循环。我正在寻找一个简短而有效的想法,比如使用 LINQ 查询表达式或 LINQ lambda 表达式的解决方案。我在 C# 中使用 .NET Framework 3.5。我找到了一些关于 Except() 方法的信息,但不幸的是我无法理解该方法发生了什么。如果有人能解释建议的算法,那就太好了。

最佳答案

如果您已经检查过 key 是相同的,您可以使用:

var dict3 = dict2.Where(entry => dict1[entry.Key] != entry.Value)
.ToDictionary(entry => entry.Key, entry => entry.Value);

解释一下,这将:

  • 遍历 dict2 中的键/值对
  • 对于每个条目,查找 dict1 中的值并过滤掉两个值相同的任何条目
  • 从剩余条目(即 dict1 值不同的条目)中获取每对的键和值,就像它们出现在 dict2 中一样,形成一个字典。 .

请注意,这避免了依赖 KeyValuePair<TKey, TValue> 的相等性- 依靠它可能没问题,但我个人觉得这更清楚。 (当您对字典键使用自定义相等比较器时,它也会起作用 - 尽管您也需要将其传递给 ToDictionary。)

关于c# - 如何在 C# 中比较两个字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9547351/

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