根据多个字段排列对象

时间:2016-12-20 00:01:09

标签: c# linq sorting

我有一个场景,我想根据不同的属性对记录列表进行排序和排名。每个对象都有总属性,还有一个名为得分的整数值列表, 模型就像

public class Routine
{
    public string Title { get; set; }

    public int Total { get; set; }

    public List<int> Scores { get; set; }
}

我想对记录进行排名,

  • 首先:基于总物业
  • 第二:基于分数属性
  • 中的第一个值
  • 然后:根据分数属性
  • 中的第二个值
  • 等等

例如,我考虑这三个记录。

enter image description here

感谢您的帮助和想法。

2 个答案:

答案 0 :(得分:2)

使用linq,您可以使用Orderby(Descending),然后将任意数量的ThenBy(Descending)子句链接在一起。

        var soterdList= initialList.OrderByDescending(r => r.Total)
            .ThenByDescending(r => r.Scores.FirstOrDefault())
            .ThenByDescending(r => r.Scores.Skip(1).FirstOrDefault()).ToList();

答案 1 :(得分:1)

您可以使用OrderByThenBy

var ordered = items.OrderBy(x => x.TotalProperty).ThenBy(x => x.S1).ThenBy(x => x.S2);

如果您想降序,也可以使用OrderByDescending