需求分析,我们要根据一个变量来生成排名,变量数值相同则在同一名,名数则跳过,比如第一有两个,那就不会有第二名,直接到第三名
直接上代码
public class fadsfsd
{
public int id {
get; set; }
public decimal Score {
get; set; }
public int Rank
{
get; set; }
}
static void Main(string[] args)
{
List<fadsfsd> fadsfsds = new List<fadsfsd>() {
new fadsfsd() {
id = 1, Score = 10 },
new fadsfsd() {
id = 2, Score = 19 },
new fadsfsd() {
id = 3, Score = 10 },
new fadsfsd() {
id = 4, Score = 8 },
new fadsfsd() {
id = 5, Score = 8 },
new fadsfsd() {
id = 6, Score = 7 },
new fadsfsd() {
id = 7, Score = 5 },
new fadsfsd() {
id = 8, Score = 10 }
};
var sorted = fadsfsds.OrderByDescending(x => x.Score).ToList();
fadsfsds.ForEach(t =>
{
t.Rank = sorted.FindIndex(s => s.Score == t.Score) + 1;
});
}
排序生成排名结果