【问题标题】:display data sorted by date显示按日期排序的数据
【发布时间】:2015-08-10 18:16:00
【问题描述】:
public class Person
{
    public string Name {get; set;}                
    public DateTime Created { get; set; }
}

public class MyData
{
   public List<Person> Persons {get; set; }

   public MyDate()
   {
      Persons = new List<Person>();
   }           
}

我想显示按日期排序的人

在 2015 年 5 月 28 日输入的日期

foreach(var person in Model.Persons){
    // display person.Name
}

在 2015 年 5 月 27 日输入的日期

foreach(var person in Model.Persons){
    // display person.Name
}

在 2015 年 5 月 26 日输入的日期

foreach(var person in Model.Persons){
    // display person.Name
}

【问题讨论】:

  • 为什么不对模型人物进行排序,然后使用OrderByDescending()进行循环

标签: c# .net linq sorting


【解决方案1】:

您需要按天对 Person 对象进行分组,所以让我们这样做:

var res = Model.Persons.OrderByDescending(p => p.Created)
   .GroupBy(p => p.Created.ToShortDateString());

在控制台上显示它们:

foreach(var entry in res)
{
    // Day is the same for all items in a group entry.
    string groupDay = entry.First().Created.ToShortDateString();
    Console.WriteLine(groupDay);

    // list all names of persons in that group
    foreach(Person p in entry)
    {
        Console.WriteLine(p.Name);
    }
}

【讨论】:

    【解决方案2】:

    我相信您会想要使用 groupBy 以便您可以按日期获得结果:

     var query = Persons.OrderByDescending(c => c.Created).GroupBy(n=> n.Created.ToShortDateString());
    
     foreach (var d in query)
            {
                Console.WriteLine(d.Key);
                foreach (var names in d)
                   Console.WriteLine(names.name);
            }
    

    【讨论】:

      【解决方案3】:

      你可以这样做:

      Persons.OrderBy(p => p.CreatedDate);
      

      【讨论】:

      • 这不会按整天分组。
      猜你喜欢
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多