【发布时间】:2016-12-02 19:12:18
【问题描述】:
假设我有两个列表。
我们知道列表中的项目数相同,并且 ID 匹配。
但是,一个或多个属性(ID 除外)可能已更改。在这种情况下,其中两个数量发生了变化:
List1
---------
{
ItemId: 1
Quantity: 10
}
{
ItemId: 2
Quantity: 12
}
{
ItemId: 3
Quantity: 1
}
然后是一个几乎相同的匹配项列表...
List2
---------
{
ItemId: 1
Quantity: 10
}
{
ItemId: 2
Quantity: 3
}
{
ItemId: 5
Quantity: 1
}
除了循环遍历它们并比较 Quantity 属性之外,有没有办法比较两个列表,找到发生更改的 ID,然后仅对更改的项目调用 Update 方法?
换句话说,我只是想避免循环遍历每个列表。
【问题讨论】:
-
使用
GroupBy查找重复项,然后将其过滤掉? -
这里出现的任何解决方案都将在幕后迭代......
-
好的,这就是我想知道的。所以没有不迭代的内置增量方法。 (叹气)我可能不得不重新考虑这一切。
-
@Eris -- 这可能是最好的解决方案
-
如果您说
List1[i].ItemId == List2[i].ItemId,那么一个循环就足够了,而且易于理解。如果数据来自数据库,也许您可以修改用于获取数据的查询。
标签: c# performance linq