【发布时间】:2014-06-23 22:26:29
【问题描述】:
我有一个这样的对象:
public class Sheet
{
public decimal? Value1 { get; set; }
public decimal? Value2 { get; set; }
}
我有一个构建Tuple<int, Sheet> 列表的 linq 查询。 int 是存储在我们数据库中的百分比值。这可能是一个包装类,但为简单起见,我使用的是元组。
那我有一个扩展方法
public static decimal CalculateValue(this List<Tuple<int, Sheet>> sheets, Expression<Func<Tuple<int, Sheet>, decimal?>> field)
{
//return sum of int / 100 * field
}
我想做的是调用这样的东西(实际上是使用 linq 从对象构建的列表)
List<Tuple<int, Sheet>> sheets = new List<Tuple<int, Sheet>>();
var value1 = sheets.CalculateValue(x => x.Value1);
var value2 = sheets.CalculateValue(x => x.Value2);
我不想使用反射。我不想要属性Value1 或Value2 的“魔法”字符串。有没有办法让我的扩展方法使用表达式获取属性,然后将其乘以百分比,然后将结果汇总到集合中?
【问题讨论】:
-
为什么你使用表达式而不是简单的 Func?