【发布时间】:2014-01-06 12:56:24
【问题描述】:
我有一个可以包含 ~200'000 项的列表。我需要使用子列表更新固定数量的字段,例如 150 个项目。这是我现在使用的代码:
listItem:200'000 个项目列表 - subListItem:150 个项目列表(更新)
listItem.Select(item =>
{
if (subListItem.Exists(x => x.ID == item.ID))
{
var currentItem = subListItem.Single(x => x.ID == item.ID);
item.FIELD_1 = currentItem.FIELD_1;
item.FIELD_2 = currentItem.FIELD_2;
item.FIELD_3 = currentItem.FIELD_3;
item.FIELD_4 = currentItem.FIELD_4;
}
return item;
}).ToList();
这很好用,但性能真的很差。你有什么建议吗?
更新的解决方案:
dictItem = listItem.ToDictionary(x => x.ID);
foreach (Item updatedItem in subListItem)
{
Item originalItem = dictItem[updatedItem.ID];
originalItem.FIELD_1 = updatedItem.FIELD_1;
originalItem.FIELD_2 = updatedItem.FIELD_2;
originalItem.FIELD_3 = updatedItem.FIELD_3;
originalItem.FIELD_4 = updatedItem.FIELD_4;
dictItem[updatedItem.ID] = originalItem;
}
【问题讨论】:
-
@haim770 是的,它是 Linq to Objects
标签: c# linq list generics updates