为选择器创建表达式树

时间:2017-10-09 11:18:25

标签: c# linq lambda expression-trees

相关:

Create a Lambda Expression With 3 conditions

Convert Contains To Expression Tree

Convert List.Contains to Expression Tree

请考虑以上问题。

我想为此写一个查询:

using (MyEntities context = new MyEntities())
{
     var DbSet = context.CreateObjectSet<T>();
     var Max = DbSet.Where(exp).Select(selector).Max();
}

我不知道如何为selector编写代码。我应该使用Select超载的是什么?以及如何使用表达式树来编写它?

由于

1 个答案:

答案 0 :(得分:2)

  

我应该使用什么选择重载?

The one with a single parameter in addition to the source

public static IQueryable<TResult> Select<TSource, TResult>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TResult>> selector
)
  

如何使用表达式树来编写?

选择器需要获取TSource参数,并生成要检索Max的字段。例如,假设TSource的类型为Employee,您希望找到类型为Max的{​​{1}}属性的Salary。然后你将创建一个这样的表达式树:

decimal