gpt4 book ai didi

c#-2.0 - 在 C# 2.0 中比较两个 List> 的正确方法

转载 作者:行者123 更新时间:2023-12-01 13:04:18 26 4
gpt4 key购买 nike

这是在 C# 2.0 中进行比较的正确方法吗(没有 LINQ)。

下面的代码工作正常,但我认为这不是比较的好方法。

        List<KeyValuePair<string, foo>> list1 = new List<KeyValuePair<string, foo>>();
List<KeyValuePair<string, foo>> list2 = new List<KeyValuePair<string, foo>>();
List<foo> diffList = new List<foo>();

list1.Add(new KeyValuePair<string, foo>("1", new foo("1", new Cost(1.0)));
list1.Add(new KeyValuePair<string, foo>("2", new foo("2", new Cost(2.0)));
list1.Add(new KeyValuePair<string, foo>("3", new foo("3", new Cost(3.0)));
list1.Add(new KeyValuePair<string, foo>("5", new foo("5", new Cost(5.0)));

list2.Add(new KeyValuePair<string, foo>("1", new foo("1", new Cost(1.0));
list2.Add(new KeyValuePair<string, foo>("2", new foo("2", new Cost(2.1)));
list2.Add(new KeyValuePair<string, foo>("4", new foo("4", new Cost(4.0));
list2.Add(new KeyValuePair<string, foo>("6", new foo("6", new Cost(6.0)));
list2.Add(new KeyValuePair<string, foo>("7", new foo("7", new Cost(7.0)));

foreach (KeyValuePair<string, foo> pair1 in list1)
{
bool b = true;
foreach (KeyValuePair<string, foo> pair2 in list2)
{
if (pair2.Key == pair1.Key)
{
if (pair2.Value.Equals(pair1.Value))
{
list2.Remove(pair2);
break;
}
else
{
diffList.Add(pair2.Value);
diffList.Add(pair1.Value);
list2.Remove(pair2);
b = false;
break;
}
}
else
{

diffList.Add(pair2.Value);
diffList.Add(pair1.Value);
list2.Remove(pair2);
b = false;
break;
}
}
if (list2.Count == 0 && b)
{
diffList.Add(pair1.Value);
}
}
foreach (KeyValuePair<string, foo> pair2 in list2)
{
diffList.Add(pair2.Value);
}

最佳答案

这样做会更简单、更快捷:

  1. 将两个列表推送到字典中(或首先构建字典)。
  2. 遍历一个字典,查找另一个字典中的每个键,相应地添加差异条目。仅添加您正在迭代的字典中的条目。
  3. 交换词典并重复循环。

关于c#-2.0 - 在 C# 2.0 中比较两个 List<KeyValuePair<string, Object>> 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4019357/

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