2009-10-29 68 views
0

我有下面的代碼,但它不工作comapre日期變換後的字符串任何機構可以幫助我在此先謝謝了LINQ的日期比較問題

 DateTime dt = DateTime.Now; 
     List<DateTime> dateTimes = new List<DateTime>(); 
     dateTimes.Add(dt); 
     dateTimes.Add(dt); 
     dateTimes.Add(dt); 
     string str = dt.ToString(); 
     DateTime myDateTime = DateTime.Parse(str); 

     var query = from d in dateTimes 
        where d == myDateTime 
        select d; 
     foreach (var result in query) 
     { 
      Console.WriteLine(result); 
     } 
     Console.Read(); 

回答

1

的原因是,ToString方法被截斷實際時間稍微有些偏差,所以當你回到另一個方向時結果是不一樣的。

更換你的第一線,例如,與

DateTime dt = new DateTime(2009,10,29,16,35,56); 

,你會看到發生了什麼事情。

0

我會建議不要當你需要類型之間切換使用的ToString()這樣頻繁,更好的方法是使用自定義對象的方法,至少專業版本一樣的CompareTo比較。

試試這個

DateTime dt = DateTime.Now; List dateTimes = new List(); dateTimes.Add(dt); dateTimes.Add(dt); dateTimes.Add(dt); 字符串str = dt.ToString(); 日期時間myDateTime = DateTime.Parse(STR);

var query = from d in dateTimes 
       where d.CompareTo(myDateTime) == 1 
       select d; 
    foreach (var result in query) 
    { 
     Console.WriteLine(result); 
    } 
    Console.Read(); 

問候,

烏斯曼阿夫扎爾

0

我已經解決了這個問題 解決方案是不保存日期時間格式的時間戳字符串insetead你應該DateTime對象轉換成其造成相應的蝨子和商店蜱在字符串變量和字後,當你想Date對象使用代碼 日期時間myDateTime =新的日期時間(int64.Parse(strDateTimeTicks))的下面一行; 這將返回的確切日期時間對象