在列表中对属性值相同的值进行排序

时间:2018-03-09 16:40:22

标签: c# list sorting

我在列表中有范围值,我希望按日期降序排序,其中属性值相同。

我无法对所有内容进行排序,因为它首先按照Id的日期排序。

所以我的第一步是如下

 activites = activites.OrderByDescending(a => a.StageId).ThenBy(d => DateTime.Parse(d.InteractionDate)).ToList();

问题是id是相同的(见下文)

  • 8预定电话 - 2018年6月12日
  • 7激活 - 2018年6月4日
  • 7激活 - 2018年6月5日
  • 7激活 - 2018年6月6日
  • 6 Mail - 2018年6月1日

我希望它像这样排序。

  • 8预定电话 - 2018年6月12日
  • 7激活 - 2018年6月6日
  • 7激活 - 2018年6月5日
  • 7激活 - 2018年6月4日
  • 6 Mail - 2018年6月1日

我尝试了这个作为下一步没有成功的步骤。字段值(StageName)可以更改,但并不总是保持不变。

var stages = activities.Select(s => s.StageName).ToList();
        foreach(var s in stages)
        {
            activities.Where(a => a.StageName== s).OrderByDescending(a => DateTime.Parse(a.InteractionDate)).ToList();               
        }
        return activities;

在代码中,“阶段”代表预定呼叫,激活等。

1 个答案:

答案 0 :(得分:4)

activites = activites
    .OrderByDescending(a => a.StageId)
    .ThenByDescending(d => DateTime.Parse(d.InteractionDate)).ToList();