如何对包含 3 个变量的列表进行排序?
该列表具有三个值:clusCode、DocCode 和 xValue。
List<item> unSORT=new list<item>();
var okSORT=from element in unSORT
orderby element.xValue descending
select element;
如何对包含 3 个变量的列表进行排序?
该列表具有三个值:clusCode、DocCode 和 xValue。
List<item> unSORT=new list<item>();
var okSORT=from element in unSORT
orderby element.xValue descending
select element;
试试这样: -
var okSort = unSort.OrderByDescending(x=> x.xValue)
.ThenBy(x=> x.clusCode)
.ThenBy(x=> x.DocCode)
.ToList();
你的问题很不清楚,但我怀疑你想要这样的东西:
var okSORT = from element in unSORT
orderby element.xValue descending, element.clusCode, element.DocCode
select element;
假设您希望它主要按xValue
(最大在前)排序,然后按clusCode
(字典上最早在前),然后按DocCode
(字典上最早在前)。这将返回一个IEnumerable<item>
. 如果你需要 a 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
.
我强烈建议您也进行命名。类型名称、属性名称和变量名称都是非常规/不清楚的。
使用ThenBy
orThenByDescending
子句
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)