我有一個類Offer
其中包含一個歸檔類別。對列表進行排序,使特定值排在最前
我希望特定類別的所有優惠出現在最上面,其次是所有其他優惠。
我試過了,但無濟於事,你會推薦什麼?
Offers = Offers.OrderBy(x => x.Category == "Corporate").ToList();
我有一個類Offer
其中包含一個歸檔類別。對列表進行排序,使特定值排在最前
我希望特定類別的所有優惠出現在最上面,其次是所有其他優惠。
我試過了,但無濟於事,你會推薦什麼?
Offers = Offers.OrderBy(x => x.Category == "Corporate").ToList();
當您以通過一個布爾值false
(0)來true
前(1)。拿到賽的謂詞的元素首先你應該使用OrderByDescending
反向排序:
Offers = Offers.OrderByDescending(x => x.Category == "Corporate").ToList();
+1不錯的解決方案 –
呃,但是這也會扭轉其他一切的順序。試試'OrderBy(x => x.Category!=「Corporate」)'。 –
+1。也許可以通過添加一個ThenBy(x => x.Category)來按類別名稱對剩餘商品進行排序..? –
的C# Language Specification 5.0不指定true
和false
值的字節表示。因此,最好不要依靠true
代表1
的假設。另外,由布爾表達式x.Category == "Corporate"
排序的結果並不明顯,因爲true
也可以由負值表示。因此,我使用三元運算符來明確指定排序值:
Offers = Offers
.OrderBy(x => x.Category == "Corporate" ? 0 : 1)
.ThenBy(x => x.Category)
.ThenBy(x => x.Date) // or what ever
.ToList();
當您說「無濟於事」時,該表達式的結果是什麼?它出什麼問題了? –
看看http://stackoverflow.com/questions/728319/linq-orderby-against-specific-values –
它沒有正確排序,它似乎仍然是在原來的順序。 – Wesley