我正在尝试创建一个Expression<Func<T, TKey>>
forIQueryable<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();