麻烦创造一个适当的lambda表达式

时间:2009-11-07 21:07:52

标签: c# asp.net-mvc entity-framework lambda

这是我需要改变的代码:

var xParam = Expression.Parameter(typeof(E), typeof(E).Name);
MemberExpression leftExpr = MemberExpression.Property(xParam, this._KeyProperty);
Expression rightExpr = Expression.Constant(id);
BinaryExpression binaryExpr = MemberExpression.Equal(leftExpr, rightExpr);
//Create Lambda Expression for the selection
Expression<Func<E, bool>> lambdaExpr = Expression.Lambda<Func<E, bool>>(binaryExpr, new ParameterExpression[] { xParam });

现在,我要离开的表达式为(x => x.RowId == id),我想将其更改为(x => x.RowId),以便我可以在OrderBy中使用ObjectContext.CreateQuery(T) {1}}稍后调用的方法。

有没有人知道如何更改上面的代码,以便lambda在OrderBy中用于按ID字段排序是正确的吗?

旁注: RowId来自this._KeyProperty我相信。这是使用Asp.Net MVC上的实体框架的通用存储库的一部分

1 个答案:

答案 0 :(得分:3)

只需省略创建常量和“=”:

  var xParam = Expression.Parameter(typeof(E), "x");
  var propertyAccessExpr = Expression.Property(xParam, this._KeyProperty);
  var lambdaExpr = Expression.Lambda<Func<E, bool>>(propertyAccessExpr, xParam);

这假设_KeyProperty的类型为'bool'。如果它有不同的类型,只需更改Func&lt; E,bool&gt;到适当的类型。

已编辑合并asgerhallas和LukLed的好建议)