2009-10-29 72 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))的下面一行; 这将返回的确切日期时间对象