【发布时间】:2015-02-12 20:56:53
【问题描述】:
假设我正在执行这样的 LINQ 查询(这是 LINQ to Objects,顺便说一句):
var rows =
from t in totals
let name = Utilities.GetName(t)
orderby name
select t;
所以GetName 方法只是从Total 对象计算显示名称,并且是let 关键字的体面使用。但是假设我有另一种方法,Utilities.Sum(),它对Total 对象应用一些数学并在其上设置一些属性。我可以使用let 来实现这一点,如下所示:
var rows =
from t in totals
let unused = Utilities.Sum(t)
select t;
这里奇怪的是Utilities.Sum() 必须返回一个值,即使我不使用它。如果它返回void,有没有办法在 LINQ 语句中使用它?我显然不能这样做:
var rows =
from t in totals
Utilities.Sum(t)
select t;
PS - 我知道在 LINQ 表达式中调用具有副作用的方法可能不是好的做法。只是想完全理解 LINQ 语法。
【问题讨论】:
-
使用
foreach,这就是它的用途。 -
不确定为什么要使用 Utilities 对象来获取 tname 或 sum /b> object... Linq 提供以特定顺序获取数据或使用聚合函数的功能。我认为,您将访问数据的旧方法与新方法混合在一起。请注意,如果 Totals 和 Utilities 之间存在关系,您可以加入数据。
-
@MaciejLos 在我的示例中,
Utilities类是对同一对象的多个属性求和。 LINQ 中的Sum方法对IEnumerable中的一系列值求和。
标签: c# .net linq linq-to-objects