2011-12-20 38 views
3

我有以下的LINQ排序依據條款:LINQ排序依據條款 - 強制某些字符串始終在頂部

Menu[] sorted = ret.OrderBy(menu => menu.Title).ToArray(); 

這個偉大的工程,如菜單在其標題的順序進行排序。

但是,如果標題碰巧是「收藏夾」,我希望它永遠是數組中的第一個元素,無論如何。

這樣做最簡單的方法是什麼?謝謝!

回答

11

我會說:

Menu[] sorted = ret.OrderBy(menu => menu.Title != "Favorites") 
        .ThenBy(menu => menu.Title) 
        .ToArray(); 
+0

我想你應該在第一條語句 – Nagg 2011-12-20 06:45:25

+0

是的使用OrderByDescending,或者只是做一個'=',而不是''== - 無論哪種方式,這個偉大的工程! – 2011-12-20 06:46:12

+1

不,它將'true'解釋爲'1':'OrderBy'從最低到最高,從'0'到'1',從'假'到'真'。 – hvd 2011-12-20 06:59:12