在Linq中传递参数
我在方法中有以下代码:
someData = table.AsEnumerable() .Where(row => row.someRow.Equals("Something")) .Sum(row => row.AnotherRow);
在最后一行,我想从其他地方传入一个参数,它将取代.AnotherRow
换句话说,类似于:
.Sum(row => row. + myParameter);
有任何想法吗? 我在尝试上述操作时遇到错误。 非常感谢任何帮助。
你无法传递代表.AnotherRow
东西,但你可以传递一个从你的对象中选择所需属性的仿函数。
假设table
是IEnumerable
。 然后你可以这样做:
int SumSelected(Func attrSelector) { return table.AsEnumerable() .Where(row => row.someRow.Equals("Something")) .Sum(row => attrSelector(AnotherRow)); }
现在,您可以使用“selector”调用此方法,该“selector”指定要添加的属性,如下所示:
var totalCustomers = SumSelected(obj => obj.CustomerCount); var totalStores = SumSelected(obj => obj.StoreCount);
我认为:
someData = table.AsEnumerable() .Where(row => row.someRow.Equals("Something")) g.Sum(row => Calculate(row => row.AnotherRow, row1 =>row1.AnotherRow));
方法计算:
private double Calculate(double d1, double d2) { return d1 + d2; }