Foo().OrderBy(x=> x.Name)
如果我想按照這種方式對集合進行排序,但是隻有一個id ==(例如314)的元素應該總是在開頭,而不管它的名稱如何。Linq - 高級.OrderBy
Foo().OrderBy(x=> x.Name)
如果我想按照這種方式對集合進行排序,但是隻有一個id ==(例如314)的元素應該總是在開頭,而不管它的名稱如何。Linq - 高級.OrderBy
您可以在兩輪對其進行排序:
Foo().OrderBy(x => x.Id == 314 ? 0 : 1).ThenBy(x => x.Name)
也許這是更簡單
Foo().OrderBy(x => x.Id != 314).ThenBy(x => x.Name)
個人而言,我想這事後處理的(假設布爾值false之前邏輯真留着)客戶端,但如果你想要一個LINQ方式,那麼我可能會避免Concat
- 這將是一個更復雜的查詢。我會去:
int id = 314;
var data = Foo().OrderBy(x => x.Id == id ? 0 : 1).ThenBy(x => x.Name)
布爾假排序。 ILSpy顯示,如果值相等,則Boolean.CompareTo'返回0;如果this'爲假則返回-1,否則返回1. – user7116
好知道!謝謝。 – jishi