这是什么意思,为什么(如果有的话)很重要?
最佳答案
这意味着您可以在查询中添加额外的“运算符”。这很重要,因为您可以非常高效地做到这一点。
例如,假设您有一个返回员工列表(可枚举)的方法:
var employees = GetEmployees();
以及使用该方法返回所有管理器的另一种方法:
IEnumerable<Employee> GetManagers()
{
return GetEmployees().Where(e => e.IsManager);
}
您可以调用该函数来获取即将退休的经理并向他们发送电子邮件,如下所示:
foreach (var manager in GetManagers().Where(m => m.Age >= 65) )
{
SendPreRetirementMessage(manager);
}
小测验:您的员工名单会重复多少次?答案是恰好一次;整个操作仍然只是 O(n)!
另外,我不需要为此设置单独的方法。我可以在一个地方编写包含这些步骤的查询:
var retiringManagers = GetEmployees();
retiringManagers = retiringManagers.Where(e => e.IsManager);
retiringManagers = retiringManagers.Where(m => m.Age >= 65);
foreach (var manager in retiringMangers)
{
SendPreRetirementMessage();
}
一个很酷的事情是我可以在运行时更改,这样我可以在 if
block 中包含或不包含合成的一部分,这样决定使用特定的过滤器是在运行时制作的,一切仍然很好。
关于linq - 当他们说 LINQ 是可组合的时,他们是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1145746/