Edu*_*elo 1 .net c# linq performance entity-framework
我有以下列表,我想从列表中减去Count列表的属性BA
这是样本列表.请注意,我实际上使用的是Linq-To-Entities:
清单A.
List<Leave> defaultLeaves = new List<Leave>()
{
new Leave{ Id = 1 , Count = 7},
new Leave{ Id = 2 , Count = 7},
new Leave{ Id = 3 , Count = 7},
new Leave{ Id = 4 , Count = 3}
};
Run Code Online (Sandbox Code Playgroud)
清单B.
List<Leave> usedLeaves = new List<Leave>()
{
new Leave{ Id = 1 , Count = 1},
new Leave{ Id = 2 , Count = 2}
};
Run Code Online (Sandbox Code Playgroud)
我希望列表的输出是这样A的,B通过相应的列表计数从列表中减去计数Ids
List<Leave> availableLeaves = new List<Leave>()
{
new Leave{ Id = 1 , Count = 6},
new Leave{ Id = 2 , Count = 5},
new Leave{ Id = 3 , Count = 7},
new Leave{ Id = 4 , Count = 3}
};
Run Code Online (Sandbox Code Playgroud)
这有可能使用linq方法???
IMO这是一个完美的候选人left outer join:
var availableLeaves =
(from d in defaultLeaves
join u in usedLeaves on d.Id equals u.Id into match
from u in match.DefaultIfEmpty()
select new Leave
{
Id = d.Id,
Count = d.Count - (u != null ? u.Count : 0)
}).ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
591 次 |
| 最近记录: |