【发布时间】:2018-04-12 00:04:53
【问题描述】:
我有以下
List<WorkItemHeader>
WorkItemWorkItemHeader(string company, string division, string customerNumber, string imgCode, int sequence, string orderNumber, int lineNumber, DateTime importDate, int processType, int operatorID, int typeset, string product)
我想按多个属性(按 Division、ImportDate、OrderNumber、LineNumber)对我的列表进行排序
分区包含(ABC、XYZ、DEF、HIJ)
我的要求(和问题)是,Division 需要先按包含:(XYZ, ABC) 的 Division 排序,然后按 ImportDate、OrderNumber、LineNumber。
MySql 有 FIELD()
ORDER BY FIELD(position,'forward', 'midfielder', 'defender', 'goalkeeper')
T-SQL 有 CASE WHEN
ORDER BY CASE Position WHEN "forward" THEN 1
WHEN "defender" THEN 2
WHEN "midfielder" THEN 3
WHEN "goalkeeper" THEN 4 END
如何使用 Linq 模拟排序?
【问题讨论】:
-
如果我只是订购这样的东西,那会起作用: WorkItemHeaders = (List
)WorkItemHeaders.OrderBy(x => x.Division).ThenBy(x => x.ImportDate).ThenBy( x => x.OrderNumber).ThenBy(x => x.LineNumber);我需要先使用字符串值按特定顺序排序的 Division。