【发布时间】:2013-10-10 17:19:44
【问题描述】:
我有以下型号
public class Model
{
public string Name {get;set;}
public DateTime HireDate {get;set;}
public decimal Salary {get;set;}
public int Hours {get;set;}
}
现在我有以下列表
List<Model> employees = new List<Model>();
我正在从用户那里获取表达式字符串输入,以下是用户可能使用的示例
工资
工资 + 500
薪水*小时
总和(小时)
总和(小时 * 工资)
总和(小时)/分钟(小时)
我必须将用户的表达式处理成另一个 int 或 decimal 的 IEnumerable,具体取决于计算以及哪种类型具有更高的精度,例如第三个表达式将生成以下内容
var result = employees.Select(e => e.Salary * e.Hours)
第 4 个会变成这个
var result = employees.Sum(e => e.Hours)
我目前正在这样做,首先将表达式解析为解析树并使用System.Linq.Expressions 命名空间构建表达式树。使用这种方法,有很多代码,其他开发人员不容易阅读。有没有更简单的方法?
【问题讨论】:
标签: c# linq lambda expression enumerable