我正在寻找有关以下方法的任何建议或提示,即使用LINQ在Collection中找到null的某个属性,然后遍历结果(子列表)并从同一个Collection中的另一个属性上执行方法.
private void SetRaises()
{
if (employeeCollection != null)
{
var noRaiseList = employeeCollection .Where(emp => emp.Raise == null).ToList();
foreach (var record in noRaiseList )
{
CalculateRaise(record);
}
}
}
public void CalculateRaise(Employee emp)
{
if (emp!= null)
emp.Raise = emp.YearsOfService * 100;
}
Run Code Online (Sandbox Code Playgroud)
我在第一种方法SetRaises()中不喜欢的部分是以下代码段:
foreach (var record in noRaiseList )
{
CalculateRaise(record);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法直接将该部分集成到我的LINQ表达式中,即我不知道的一些扩展方法?
谢谢!
你可以做的第一件事是:不要生成中间列表:
var pending = employeeCollection.Where(emp => emp.Raise == null);
foreach (var record in pending)
{
CalculateRaise(record);
}
Run Code Online (Sandbox Code Playgroud)
这与:
foreach (var record in employeeCollection.Where(emp => emp.Raise == null))
{
CalculateRaise(record);
}
Run Code Online (Sandbox Code Playgroud)
现在这是非缓冲的延迟执行.
但坦率地说,LINQ在这里并没有给你太多帮助.你也可以:
foreach(var emp in employeeCollection)
{
if(emp.Raise == null) CalculateRaise(emp);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |