【发布时间】:2011-08-19 15:55:52
【问题描述】:
我有一个数组,用于存储我想要对列表进行排序的顺序。
SortOrderArray: "Color", "Volume", "Weight"
所以我想按颜色、体积和重量来排列我的清单
MyList.OrderBy(a=>a.Color).ThenBy(a=>a.Volume).ThenBy(a=>a.Weight).ToList();
所以这很好。现在,我希望能够编写一个函数,根据我发送的 sortOrder 数组进行排序:
public List<row> GetSortedList(List<row> list, string[] sortOrder){
???
}
如果不为 sortOrders 的每个组合编写一个 linq 查询,我无法弄清楚如何做到这一点(27 个不同的查询似乎是实现这一目标的最糟糕的方法,而且我犯一个小错误的可能性很大) .我希望能够只编写 3 个 linq 查询,根据 3 种排序方法中的每一种重新排序列表,如下所示:
switch(sortOrder[0]){
Sort by the first sort method
}
switch(sortOrder[1]){
Sort by the second sort method
}
switch(sortOrder[2]){
Sort by the third sort method
}
但是如果我尝试执行上面的代码,它只是每次都使用它,而不是在它上面的代码之后进行子排序。希望这很清楚,任何帮助将不胜感激。
【问题讨论】: