C# 查找重复项并合并列表中的项
我有一个类,它有一个存储字符串值的字典和一个存储无符号64位整数的列表。如果该类的字典包含相同的键和值,则该类被视为等同于相同类型的另一个类 我还有一个静态列表,其中包含这个类的几个实例。我想检查此列表中是否有重复项。如果有重复项,我想合并它们的列表 下面是我认为的伪代码:C# 查找重复项并合并列表中的项,c#,.net-2.0,C#,.net 2.0,我有一个类,它有一个存储字符串值的字典和一个存储无符号64位整数的列表。如果该类的字典包含相同的键和值,则该类被视为等同于相同类型的另一个类 我还有一个静态列表,其中包含这个类的几个实例。我想检查此列表中是否有重复项。如果有重复项,我想合并它们的列表 下面是我认为的伪代码: foreach (var item in StaticList) { if (item.Equals(anotherItem)) // i.e., dictionaries are equal {
foreach (var item in StaticList)
{
if (item.Equals(anotherItem)) // i.e., dictionaries are equal
{
item.UInt64List.AddRange(anotherItem.UInt64List);
StaticList.Remove(anotherItem);
}
}
如果不借助最新框架添加的功能(我的目标框架是.NET2.0,因此没有花哨的联合、交集等),我如何才能做到这一点
注意:我已经找到了如何检查两个字典是否相等的方法,我想找到重复的字典并将它们合并。您必须将所有的项目相互比较
for (int i = 0; i < StaticList.Length-1; i++)
{
var item = StaticList[i];
for (int j = i+1; j < StaticList.Length;)
{
var anotherItem = StaticList[j];
if (item.Equals(anotherItem)) // i.e., dictionaries are equal
{
item.UInt64List.AddRange(anotherItem.UInt64List);
StaticList.RemoveAt(j); // it has better performance compared to `StaticList.Remove(anotherItem);`
}
else
j++;
}
}
for(int i=0;i
我不建议使用foreach
循环,因为您无法在迭代期间修改列表,您必须将项目放入另一个列表中,然后将其删除,这会对存储项目和稍后搜索以删除项目造成很大的性能损失