动态Linq顺序按用户定义的顺序

时间:2012-06-26 15:15:35

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

我有OrderBy的动态linq查询。

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

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

1 个答案:

答案 0 :(得分:2)

您需要执行以下操作:

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

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

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

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