【发布时间】:2021-11-29 17:39:40
【问题描述】:
我正在尝试使用属性字符串通过反射来订购我的 IMongoqueryable 集合。
不幸的是,我收到了Only fields are allowed in a $sort.的消息
private static void SetOrderBy(ref IMongoQueryable<Trade> trades, BlazorGridRequest request)
{
var prop = typeof(Trade).GetProperty(request.OrderBy);
if (request.OrderByDescending)
trades = trades.OrderByDescending(t => prop.GetValue(t));
else
trades = trades.OrderBy(t => prop.GetValue(t));
}
谁能帮我弄清楚,我怎样才能让它工作? 谢谢!
【问题讨论】:
-
我认为您在这里需要的是创建一个自定义表达式并将其传递给适当的
OrderByX:Expression<Func<Trade, string>> orderExpression = (e) => e.OrderBy; -
Trade没有OrderBy属性。request.OrderBy是一个包含Trade属性名称的字符串。所以我不能在表达式中使用e.OrderBy...
标签: mongodb-.net-driver iqueryable