2015-04-16 52 views
1

我有這個對象(玩家)與int屬性「pVictories」和「指標」。有一個球員列表,我將根據他們擁有的勝利數量「排序」他們,即排序他們。所以,獲得最多勝利的人得到名單中的0點,接下來最多的1個點,等等。如何調整此orderBy對象列表以考慮重複屬性?

如果我想這樣訂購,那麼很棒,我知道該怎麼做。然而,如果他們擁有相同數量的勝利,我會被困在如何反應中。應該發生的是我希望他們比較兩個指標屬性,並將更高的指標給予具有更高指標int的人。假設兩名球員都有4次勝利,但是球員1的指標值爲「4」,另一名球員的「2」,我想讓4號球員得到更高的位置。

我該如何調整這條線,或者添加一條線來實現這一點?這是我有什麼:

//Sort a list based on number of Victories 
List<Player> tempList = listOfPlayers.OrderBy(o => o.pVictories).ToList(); 
tempList.Reverse(); 

是否有可能在orderby中添加另一個較小的條件?如在o.pVictories部分之後也加入?或者我應該考慮創建一個自定義比較器?

回答

4

我想你想要的是既OrderByDescendingThenByDescending

List<Player> tempList = listOfPlayers.OrderByDescending(o => o.pVictories) 
            .ThenByDescending(p => p.Indicator) 
            .ToList(); 
+1

精美的作品,看起來很乾淨,而且信息豐富。女孩在她的代碼中想要什麼呢?謝謝! – Kat

+0

很高興幫助:) –

3

您可以使用ThenBy擴展:

List<Player> tempList = listOfPlayers.OrderByDescending(o => o.pVictories).ThenByDescending(p=>p.Indicator).ToList(); 
2
List<Player> tempList = listOfPlayers.OrderByDescending(o => o.pVictories).ThenByDescending(x => x.Indicator).ToList(); 

或者使用查詢語法

List<Player> tempList = (from x in listOfPlayers 
     orderby x.pVictories descending, x.Indicator descending 
     select x).ToList();