2016-07-07 44 views
0

我有包含totalScore作爲一個屬性的類的對象列表。我想根據team的totalscore得到Team的排名。這裏是我稱之爲對象的列表List data = new List();根據條件獲取對象列表的排序

所以數據包含記分板類與總分值屬性的對象。 我需要隊的排名取決於totalscore.Here是我嘗試的代碼,但它給出像Rank = 1,2,2,3的結果,但我需要Rank = 1,2,2,4像這樣。

data.OrderByDescending(x => x.totalScore).GroupBy(x => x.totalScore) 
    .SelectMany((g, i) => g.Select(e => new { data = e.Rank = i + 1 })) 
    .ToList(); 

該數據列表包含獨特的團隊,但總得分可能相同,所以totalscore團隊必須在一個等級。請幫幫我!

+0

道歉,如果我誤解,但是,你想要設計的是一種按等級(基於他們的總分)排序列表的方式。然而;如果兩支球隊的得分相同,他們必須分享等級(例如第二名),然後沒有球隊能夠獲得第三名?如果沒有球隊得分相等,順序是正確的? – mtaanquist

+0

兩隊可以得到相同的分數。比如t1 = 100,t2 = 100,t1 = 50那麼Rank就會像Rank = 1,1,3 – User1710

回答

2

如果您需要更新就地名單:

int i = 0; 
decimal? prevValue = null; 
foreach(var item in data.OrderByDescending(x => x.totalScore)) 
{ 
    item.Rank = prevValue == item.totalScore ? i : ++i; 

    prevValue = item.totalScore; 
} 
+0

在前端我需要發送數據列表,並且我有Score屬性董事會類我應該如何將這個等級分配給它?它會給出像Rank = 1,2,2,4的結果嗎? – User1710

+0

您正在發送Rank作爲列表中的單獨變量,但我需要在同一個列表中發送Rank。 – User1710

+0

@KrishnaChavan現在檢查編輯。 – user3185569

0

不同的符號(我更喜歡閱讀),但基本上是由user3185569提供了相同的答案。

var i = 1; 
var results = (from d in data orderby d.totalScore descending select new { Obj = d, Rank = i++ }).ToList(); 
相關問題