对记录执行表达式

时间:2017-05-05 08:18:42

标签: c# linq lambda

我正在尝试创建一个泛型函数来处理带有其他参数表达式的记录(List,IEnumerable等)。

static SelectList MyFunction<TModel, TValue, TText>(IEnumerable<TModel> records, Expression<Func<TModel, TValue>> val, Expression<Func<TModel, TText>> text)

通过使用MemberExpression和反射进行解析来处理这一点并不困难:

MyFunction(records, e => e.Id, e.Name)

但是当使用一些复杂的语句时,实际的实现变得更加复杂:

MyFunction(records, e => e.Id, e => e.Name?? e.Code)
MyFunction(records, e => e.Id, e => String.IsNullOrWhiteSpace(e.Name)? e.Code : e.Name)

如果不为每种类型的表达式节点制作过多的解析器,还有其他方法可以处理这些吗?

0 个答案:

没有答案