如何对3个变量列表进行排序?
该列表有三个值:clusCode,DocCode和xValue。
List<item> unSORT=new list<item>();
var okSORT=from element in unSORT
orderby element.xValue descending
select element;
答案 0 :(得分:2)
试试这样: -
var okSort = unSort.OrderByDescending(x=> x.xValue)
.ThenBy(x=> x.clusCode)
.ThenBy(x=> x.DocCode)
.ToList();
答案 1 :(得分:2)
您的问题非常不清楚,但我怀疑您想要类似的内容:
var okSORT = from element in unSORT
orderby element.xValue descending, element.clusCode, element.DocCode
select element;
假设您希望它主要按xValue
(最大的第一个)排序,然后按clusCode
排序(按字典顺序排在第一位),然后按DocCode
排序(按字典顺序排在第一位)。这将返回IEnumerable<item>
。如果您需要List<item>
,则可以使用ToList()
方法:
// orderby clause broken into multiple lines to avoid horizontal scrolling -
// that makes no difference
var okSORT = (from element in unSORT
orderby element.xValue descending,
element.clusCode,
element.DocCode
select element).ToList();
此时直接使用扩展方法可能有意义:
var okSort = unSort.OrderByDescending(element => element.xValue)
.ThenBy(element => element.clusCode)
.ThenBy(element => element.DocCode)
.ToList();
请注意,不对现有列表进行排序。如果您需要这样做,则应创建Comparer<item>
并使用List<T>.Sort
。
我强烈建议你也在为你的命名工作。类型名称,属性名称和变量名称都是非常规/不清楚的。
答案 2 :(得分:1)
使用ThenBy
或ThenByDescending
子句
from element in unSort
orderby element.xvalue descending,
element.clusCode,
element.Doccode
select element
使用lambda语法
unSort.OrderByDescending(x=>x.xvalue).ThenBy(x=>x.clusCode).ThenBy(x=>x.DocCode)