显示按日期排序的数据

时间:2015-05-28 09:55:47

标签: c# .net linq sorting

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
}

3 个答案:

答案 0 :(得分:2)

您需要整天对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);
    }
}

答案 1 :(得分: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);
        }

答案 2 :(得分:-1)

你可以这样做:

loadSingleIns