-3

如何对包含 3 个变量的列表进行排序?

截屏

该列表具有三个值:clusCode、DocCode 和 xValue。

List<item> unSORT=new list<item>();

var okSORT=from element in unSORT
           orderby element.xValue descending
           select element;
4

3 回答 3

2

试试这样: -

var okSort = unSort.OrderByDescending(x=> x.xValue)
               .ThenBy(x=> x.clusCode)
               .ThenBy(x=> x.DocCode)
               .ToList();
于 2013-09-27T16:25:33.063 回答
2

你的问题不清楚,但我怀疑你想要这样的东西:

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.

强烈建议您也进行命名。类型名称、属性名称和变量名称都是非常规/不清楚的。

于 2013-09-27T16:26:10.207 回答
1

使用ThenByorThenByDescending子句

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)
于 2013-09-27T16:25:00.567 回答