Cas*_*ton 2 c# linq performance
假设我有两个列表.
我们知道列表中的项目数是相同的,并且该ID是匹配的.
但是,一个或多个属性(ID除外)可能已经改变.在这种情况下,两个数量发生了变化:
List1
---------
{
ItemId: 1
Quantity: 10
}
{
ItemId: 2
Quantity: 12
}
{
ItemId: 3
Quantity: 1
}
Run Code Online (Sandbox Code Playgroud)
然后是几乎相同的匹配项目列表......
List2
---------
{
ItemId: 1
Quantity: 10
}
{
ItemId: 2
Quantity: 3
}
{
ItemId: 5
Quantity: 1
}
Run Code Online (Sandbox Code Playgroud)
除了遍历每个属性并比较Quantity属性之外,有没有办法比较两个列表,找到发生更改的ID,然后仅对更改的项目调用Update方法?
换句话说,我只是想避免遍历每个列表.
解决方案1使用连接:
var diffs = List1
.Join(List2, r2=>r2.ItemId, r1=>r1.ItemId, (r1,r2)=> new { r1, r2 })
.Where(r=> r.r1.Quantity != l.r2.Quantity);
Run Code Online (Sandbox Code Playgroud)
解决方案2使用除(如果项目具有可比性):
var diffs = List1.Except(List2);
Run Code Online (Sandbox Code Playgroud)
解决方案3使用MoreLinq:
var diffs = List1.ExceptBy(List2, e=> new {e.ItemId, e.Quantity});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
66 次 |
最近记录: |