OrderBy 的列表表达式
我希望能够存储一个表达式列表,以便稍后使用 IQueryable.OrderBy 执行,例如:
List<Expression<Func<MyType, object>>> list = new List<Expression<Func<MyType, object>>>();
list.Add(x => x.Date);
list.Add(x => x.ID);
IOrderedQueryable<MyType> qry = query.OrderBy(list[0]).ThenBy(list[1]);
但是这样做会引发 InvalidOperationException - 无法按类型“System.Object”排序,因为表达式是使用 object 和 定义的不是特定类型,例如 Expression
或 Expression
如何存储表达式列表,以便我可以稍后在 OrderBy 方法中执行它们吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您只需添加到此订单中吗?您稍后不需要动态删除内容吗?如果是这样的话,那就相对简单了:
我不喜欢这个使用突变的事实......编写一个不可变的版本并不会太难,其中
AddOrdering
返回一个新的QueryOrdering。
Do you just need to add to this ordering? You don't need to dynamically remove stuff later on? If that's the case, it's relatively straightforward:
I don't like the fact that this uses mutation... it wouldn't be too hard to write an immutable version, where
AddOrdering
returned a newQueryOrdering<T>
with the new function.