2010-09-03 68 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