2015-05-28 3 views
1
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>(); 
    }   
} 

Я хочу, чтобы отобразить лиц упорядоченные по дате, какотображения данных, отсортированных по дате

даты, введенные в день 28.05.2015

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

Введенная дата в день 27.05.2015

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

Дата, введенная в день 26.05.2015

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

Почему бы не отсортировать вашу модель Лица, а затем сделать свою петлю с помощью 'OrderByDescending()' – Mivaweb

ответ

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

вы можете сделать так:

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

Это не будет группироваться целыми днями. – helb

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); 
     } 
Смежные вопросы