【问题标题】:Dynamic Linq Order By user defined sequenceDynamic Linq Order By user defined sequence
【发布时间】:2012-06-26 15:15:34
【问题描述】:

我有 OrderBy 的动态 linq 查询。

 .AsQueryable().OrderBy("FullName", asc)

按全名排序后,我需要按状态排序(类似于 ThenBy())。状态可能有值,例如“A B C D” 但我需要按以下顺序“B”、“A”、“D”、“C”进行排序。结果在这种情况下不能使用 asc/desc。

【问题讨论】:

  • 我的第一个选择是在您的状态表中添加一个数字排序字段。
  • 您从什么来源(ORM?)获得 Queryable?

标签: linq sorting sql-order-by dynamic-linq


【解决方案1】:

您需要执行以下操作:

a) 按您想要的顺序定义您的密钥集合

var keys = new string[]{"B", "A", "D", "C"};

b) 使用上述键定义数据的自定义顺序

var result = yourCollection.AsQueryable()
                           .OrderBy("FullName", asc)
                           .ThenBy(x=>keys.IndexOf(x.Status));

【讨论】:

  • 谢谢,但是这里是 Dynamic Linq,我不能用 ThenBy。
  • 为什么不呢?您可以将IQueryable 之后的OrderBy("FullName", asc) 转换回IQueryable<TEntity>
猜你喜欢
  • 2017-07-05
  • 2011-06-28
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-03
  • 2020-05-21
相关资源
最近更新 更多