在Linq中传递参数

我在方法中有以下代码:

someData = table.AsEnumerable() .Where(row => row.someRow.Equals("Something")) .Sum(row => row.AnotherRow); 

在最后一行,我想从其他地方传入一个参数,它将取代.AnotherRow

换句话说,类似于:

 .Sum(row => row. + myParameter); 

有任何想法吗? 我在尝试上述操作时遇到错误。 非常感谢任何帮助。

你无法传递代表.AnotherRow东西,但你可以传递一个从你的对象中选择所需属性的仿函数。

假设tableIEnumerable 。 然后你可以这样做:

 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; }