【发布时间】:2020-06-08 08:58:12
【问题描述】:
我有两个列表:
List<Item1> list1;
List<Item2> list2;
我有以下代码用于比较列表中的项目:
ConcurrentDictionary<string, string> compareDictionary = new ConcurrentDictionary<string, string>();
for (int i = 0; i < lis1.Count; i++)
{
var item1Name= list1[i].Name.ToString();
var item1Id= list1[i].ID.ToString();
foreach (var item in list2)
{
if (item1Name.Contains(item.item2Name.ToLower()))
{
compareDictionary.TryAdd(item1Id, item.item2Id);
}
}
}
如果一个项目的Name包含另一个项目的一部分,则需要将第一个列表中的Id和第二个列表中的Id添加到ConcurrentDictionary中。
它有效,但我想简化算法并删除foreach 和if。
【问题讨论】:
-
你能分享
Item1和Item1的属性吗? -
用 AddRange 将两个列表加入到一起,例如。 list1.AddRange(list2);然后 list1.Distinct()。如果您只想匹配某些属性,则需要创建一个自定义相等比较器,
-
@level_zebra 列表属于不同类型,尝试将列表 2 添加到列表 1 时会出现编译错误。
标签: c# linq for-loop foreach concurrentdictionary