构建一个没有值表达式的谓词
building a predicate with no value expression
我正在尝试为 IQueryable<T>.OrderByDescending()
创建一个 Expression<Func<T, TKey>>
这是我的基础 class FindLast
,我发现 LastOrDefault
不起作用,因此需要 OrderByDescending.FirstOrDefault
。然而,如前所述,它是一个基础 class 并且按方法排序是主键,因此它必须是 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();
没关系,我想通了...需要将 predicate2 更改为适当的数据类型
Expression <Func <T, Int32>> predicate2
我正在尝试为 IQueryable<T>.OrderByDescending()
Expression<Func<T, TKey>>
这是我的基础 class FindLast
,我发现 LastOrDefault
不起作用,因此需要 OrderByDescending.FirstOrDefault
。然而,如前所述,它是一个基础 class 并且按方法排序是主键,因此它必须是 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();
没关系,我想通了...需要将 predicate2 更改为适当的数据类型
Expression <Func <T, Int32>> predicate2