如何对3个变量列表进行排序?如何对列表中的元素进行多重排序
名单有三个值:clusCode,DocCode和x值。
List<item> unSORT=new list<item>();
var okSORT=from element in unSORT
orderby element.xValue descending
select element;
如何对3个变量列表进行排序?如何对列表中的元素进行多重排序
名单有三个值:clusCode,DocCode和x值。
List<item> unSORT=new list<item>();
var okSORT=from element in unSORT
orderby element.xValue descending
select element;
使用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)
这不是您在查询表达式中表达多个排序的方式。 –
@Jon ....我将lambda语法与查询表达式相结合。感谢您指出。 – AlwaysAProgrammer
尝试这样的: -
var okSort = unSort.OrderByDescending(x=> x.xValue)
.ThenBy(x=> x.clusCode)
.ThenBy(x=> x.DocCode)
.ToList();
那么,它会创建一个新列表 - 但它只使用其中一个字段,并且会以错误的意义使用该字段(OP要先获得最高的xValue)。 –
@JonSkeet: - 谢谢指出。更新了我的答案! –
你的问题是非常不清楚,但我怀疑你想要的东西,如:
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
。
我会强烈建议你也在你的命名上工作。类型名称,属性名称和变量名称都是非常规/不清楚的。
@RahulTripathi:你的意思是“那不好”?我们的答案都使用LINQ,但是您只需要通过单个字段(按错误顺序)下单。 –
对不起,我错过了显而易见的!再次抱歉!! :( –
这个问题确实很不明确。图像链接没有任何理由(它只是文本),但是你应该在问题中包含所有相关信息。 –