我有以下值的集合:LINQ - 排序多個列
ID | OtherId
1 0
2 0
3 1
3 2
3 3
4 1
4 2
4 3
5 0
6 0
有沒有辦法讓在使用LINQ下面的排序方式輸出?
ID | OtherId
1 0
2 0
3 1
4 1
3 2
4 2
3 3
4 3
5 0
6 0
我有以下值的集合:LINQ - 排序多個列
ID | OtherId
1 0
2 0
3 1
3 2
3 3
4 1
4 2
4 3
5 0
6 0
有沒有辦法讓在使用LINQ下面的排序方式輸出?
ID | OtherId
1 0
2 0
3 1
4 1
3 2
4 2
3 3
4 3
5 0
6 0
你需要使用的OrderBy和ThenBy:
我沒有試過,但是因爲你的最後2行是「亂序」您需要通過一階(未)具體值,然後按列。這將是這樣的:
var sorted = table
.Where(x => x.SomeColumn == someValue)
.OrderBy(x => x.ID != 5)
.ThenBy(x => x.ID != 6)
.ThenBy(x => x.OtherId)
.ThenBy(x => x.ID)
.ToList();
如果你不想通過具體的值進行排序,你需要做2個查詢和工會:
var valueAtWhichSortingLogicChanges = 4;
var sorted = table
.Where(x => x.ID <= valueAtWhichSortingLogicChanges)
.OrderBy(x => x.OtherId)
.ThenBy(x => x.ID)
.ToList();
sorted.AddRange(table
.Where(x => x.ID > valueAtWhichSortingLogicChanges)
.OrderBy(x => x.OtherId)
.ThenBy(x => x.ID)
.ToList());
使用** **的OrderBy條款 – dmitry
我懷疑預期的結果是否是有序列表?如果是,爲什麼[5 0]和[6 0]不應該跟隨[1 0]和[2 0]對或者它應該是第一列排序,不是嗎? –
你需要解釋規則是什麼。就目前而言,你的問題是無法回答的,因爲你沒有給我們足夠的信息來說明排序標準是什麼。 –