Eoi*_*ell 0 .net c# linq select .net-4.5
我正在尝试根据分数生成一个简单的排名表.
例如,给出以下内容
List<Player> players = new List<Player>() {
new Player { Name = "John", Score = 2 },
new Player { Name = "Mary", Score = 1 },
new Player { Name = "Bob", Score = 2 },
new Player { Name = "Alice", Score = 3 },
};
var results = players
.OrderByDescending(o => o.Score)
.Select((v,i) => new { Name = v.Name, Score = v.Score, Position = i+1} );
Run Code Online (Sandbox Code Playgroud)
结果将是.
Name Score Pos
Alice 3 1
John 2 2
Bob 2 3
Mary 1 4
Run Code Online (Sandbox Code Playgroud)
相反,我希望结果如此
Name Score Pos
Alice 3 1
John 2 2
Bob 2 2 <---- this guy is tied for second
Mary 1 4 <---- this one still comes fourth
Run Code Online (Sandbox Code Playgroud)
无论如何在Linq Select期间访问上一个或下一个元素,以便您知道是增加还是减少索引值?
这样的事情会为你做什么?
.Select((v,i) => new { Name = v.Name,
Score = v.Score,
Position =
players.Count(p => p.Score > v.Score) + 1
}
);
Run Code Online (Sandbox Code Playgroud)