Сортировка списка <T>по DateTime - PullRequest
0 голосов
/ 03 сентября 2010

У меня проблемы с реализацией сортировки списка, когда задействован DateTime.Мне нужно отсортировать по DateTime. Просто соберите пример, и я не получаю ожидаемого результата.Не могли бы вы увидеть, что я делаю не так?Спасибо

   class Program
   {
       static void Main(string[] args)
       {
          List<Customer>customers=new List<Customer>();
          customers.Add(new Customer{DateOfBirth = new DateTime(2010,11,29),Name="Jo1",Surname ="Bloggs1"});
          customers.Add(new Customer { DateOfBirth = new DateTime(2010, 3, 28), Name = "Jo2", Surname = "Bloggs2" });
          customers.Add(new Customer { DateOfBirth = new DateTime(2010, 5, 29), Name = "Jo3", Surname = "Bloggs3" });
          customers.Add(new Customer { DateOfBirth = new DateTime(2010, 4, 29), Name = "Jo4", Surname = "Bloggs4" });
          customers.Add(new Customer { DateOfBirth = new DateTime(2010, 9, 29), Name = "Jo5", Surname = "Bloggs6" });

          foreach (var customer in customers)
          {
             Console.WriteLine(customer.DateOfBirth);
          }
          Console.Read();
          customers.Sort((x, y) => y.DateOfBirth.CompareTo(x.DateOfBirth));
       }
    }

    public class Customer
    {
       public string Name { get; set; }
       public string Surname { get; set; }
       public DateTime DateOfBirth { get; set; }
    }
 }

Ответы [ 3 ]

3 голосов
/ 03 сентября 2010

Ну, это сортировка их в порядке убывания. Вы можете отсортировать их в порядке по возрастанию следующим образом:

customers.Sort((x, y) => x.DateOfBirth.CompareTo(y.DateOfBirth));

Если это не то, что вас беспокоило, укажите, в чем проблема. Сказать, что вы не получите ожидаемый результат, не очень точно ...

3 голосов
/ 03 сентября 2010

Вы распечатываете customers перед сортировкой, и вы никогда не печатаете отсортированный список.Это то, что вы хотели?

2 голосов
/ 03 сентября 2010

Выполнить Сортировать перед записью:

      customers.Sort((x, y) => y.DateOfBirth.CompareTo(x.DateOfBirth));

      foreach (var customer in customers)
      {
         Console.WriteLine(customer.DateOfBirth);
      }
      Console.Read();
...