user1765862
user1765862

Reputation: 14155

display data sorted by date

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>();
   }           
}

I want to display persons ordered by date like

date entered in day 28.05.2015

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

date entered in day 27.05.2015

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

date entered in day 26.05.2015

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

Upvotes: 1

Views: 84

Answers (3)

helb
helb

Reputation: 7773

You need to group the Person objects by entire days, so let's do:

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

To display them on the console:

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);
    }
}

Upvotes: 2

Coder1409
Coder1409

Reputation: 498

I belive you would want to use groupBy so you can have the results by date :

 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);
        }

Upvotes: 2

Amit Kumar Ghosh
Amit Kumar Ghosh

Reputation: 3726

you can do like:

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

Upvotes: -1

Related Questions