构建一个没有值表达式的谓词

时间:2016-08-19 20:47:45

标签: c# linq include predicates

我正在尝试为Expression<Func<T, TKey>>

创建IQueryable<T>.OrderByDescending()

这是我FindLast的基类,我发现LastOrDefault不起作用,因此需要OrderByDescending.FirstOrDefault。但是如上所述,它是一个基类,并且按方法排序是主键,因此它必须是tableName + "PK"

以下是目前的代码:

Expression<Func<T, object>> predicate2 = null;
string propertyName = string.Empty;
propertyName = typeof(T).Name + "PK";

ParameterExpression parameter = Expression.Parameter(typeof(T), "x");
// x.PK
MemberExpression property = Expression.Property(parameter, propertyName);
ParameterExpression[] parameters = new ParameterExpression[] { parameter };
predicate2 = Expression.Lambda<Func<T, object>>(property, parameters);

result = query.Where(predicate).OrderByDescending(predicate2).FirstOrDefault(); // .LastOrDefault();

1 个答案:

答案 0 :(得分:0)

没关系,我想出来了......需要将谓词2更改为适当的数据类型

Expression <Func <T, Int32>> predicate2