Linq日期比较问题

时间:2009-10-29 16:23:00

标签: linq-to-sql

我有以下代码,但它无法比较日期转换为字符串可以任何身体帮助我提前感谢

        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();

3 个答案:

答案 0 :(得分:1)

原因是ToString方法略微截断了实际时间,因此当你向另一个方向返回时结果不一样。

例如,用

替换第一行
DateTime dt = new DateTime(2009,10,29,16,35,56); 

你会看到发生了什么。

答案 1 :(得分:0)

当你需要在类型之间切换时,我建议不要频繁使用ToString(),更好的方法是使用自定义对象至少比较专用的方法版本,比如CompareTo。

试试这个

DateTime dt = DateTime.Now;         列出dateTimes = new List();         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.CompareTo(myDateTime) == 1
                select d;
    foreach (var result in query)
    {
        Console.WriteLine(result);
    }
    Console.Read();

此致

Usman Afzal

答案 2 :(得分:0)

我已经解决了这个问题 解决方案是不要将日期时间格式的时间戳保存在字符串中,你应该将datetime对象转换为其相应的刻度并将该刻度存储在字符串变量中,并且当你想使日期对象使用下面的代码行时    DateTime myDateTime = new DateTime(int64.Parse(strDateTimeTicks)); 这将返回确切的日期时间对象