如何對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,但是您只需要通過單個字段(按錯誤順序)下單。 –
對不起,我錯過了顯而易見的!再次抱歉!! :( –
這個問題確實很不明確。圖像鏈接沒有任何理由(它只是文本),但是你應該在問題中包含所有相關信息。 –