2010-09-03 65 views
0

如果在涉及DateTime时执行排序操作时遇到问题。 我需要按日期排序 只是放在一起的一个恶作剧的例子,我没有得到预期的结果。 你能看到我做错了什么吗? 感谢Sorting a List <T> by 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

请问你的结果与你的期望有什么不同? – 2010-09-03 10:07:13

回答

3

那么,这是按降序排序。你可以在上升为了像这样对它们进行排序:如果这不是你担心

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

,请注明是什么问题。说你没有得到预期的结果是不是很精确...

+0

抱歉跛脚的解释,现在他们排序在asc order.Thanks – user9969 2010-09-03 10:22:31

3

要排序之前打印出customers,你永远打印排序列表。这是你的意图吗?

2

,可执行排序前写:

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

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

感谢您指出。 – user9969 2010-09-03 10:22:57