我的代码是根据价值订购结果。它有效,但有警告:将这个嵌套的三元运算符提取到一个独立的语句
results = resultSets.OrderBy(e => e.Status == "Status1" ? 1 :
e.Status == "Status2" ? 2 :
e.Status == "Status3" ? 3 :
e.Status == "Status4" ? 4 :
e.Status == "Status5" ? 5 : 6)
.ThenByDescending(e => e.Times);
我应该如何在辅助函数中编写这个逻辑来实现同样的目的?
答案 0 :(得分:0)
您可以使用以下状态订单创建临时表:
Status | OrderNo
-----------------
Status1 | 1
Status2 | 2
Status3 | 3
Status4 | 4
在您的查询中,您可以按状态键加入此表,并按OrderNo
列排序。
优点:
答案 1 :(得分:-1)
也许可以帮助提取数字,例如:
private int GetStatus(string status, int defaultStatus = 0)
{
int result;
return int.TryParse(status.Replace("Status",string.Empty), out result)
? result
: defaultStatus;
}
然后,
results = resultSets.OrderBy(e => GetStatus(e.Status))
.ThenByDescending(e => e.Times);