我在方法中有以下代码:
someData = table.AsEnumerable()
.Where(row => row.someRow.Equals("Something"))
.Sum(row => row.AnotherRow);
在最后一行,我想从其他地方传入一个参数来替换.AnotherRow
换句话说,比如:
.Sum(row => row. + myParameter);
有什么想法吗?我在尝试上述操作时遇到错误。非常感谢任何帮助。
答案 0 :(得分:2)
您无法传递代表.AnotherRow
的内容,但您可以传递一个从您的对象中选择所需属性的仿函数。
我们说table
是IEnumerable<MyClass>
。然后你可以这样做:
int SumSelected(Func<MyClass,int> attrSelector) {
return table.AsEnumerable()
.Where(row => row.someRow.Equals("Something"))
.Sum(row => attrSelector(AnotherRow));
}
现在您可以使用&#34;选择器调用此方法&#34;指定要添加的属性,如下所示:
var totalCustomers = SumSelected(obj => obj.CustomerCount);
var totalStores = SumSelected(obj => obj.StoreCount);
答案 1 :(得分:0)
我想:
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;
}