我有包含totalScore作为一个属性的类对象列表。我想根据team的totalscore得到Team的等级。这是我称之为List data = new List(); 的对象列表p>
因此数据包含具有总分属性的记分板类对象。 我需要团队级别取决于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();
数据列表包含唯一的团队,但总得分可能相同,因此相同的总核心团队必须在一个等级中。请帮帮我!
答案 0 :(得分: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;
}
答案 1 :(得分:0)
另一种表示法(我更喜欢可读性)但基本上与user3185569
提供的答案相同。
var i = 1;
var results = (from d in data orderby d.totalScore descending select new { Obj = d, Rank = i++ } ).ToList();