如何比较2个日期时间

时间:2014-02-08 22:36:51

标签: c# windows-8

我想将字符串转换为dateTime,然后比较它们i'm trying to compare 2 datetime stored in an sqllite database, but i still get the error "no such fonction converttodatetime" here is my code:

from x in db.Table<FicheTechnique>()
                    where Convert.ToDateTime(x.FirstDate) <= Convert.ToDateTime(newDate)

                    select x;

2 个答案:

答案 0 :(得分:0)

这是你需要做的事情

var data = from r in dt.AsEnumerable() 
           where Convert.ToDateTime(r["fld name"]) <= Convert.ToDateTime(newDate)
           select r;

您的问题是,在处理数据表时需要执行dt.AsEnumerable()。您的data将是可枚举的行集合。

完整示例:

DataTable dt = new DataTable();
dt.Columns.Add("a");
dt.Columns.Add("b");
dt.Columns.Add("c");

dt.Rows.Add("1", "01/01/2001", "01:01:2001");
var p = from r in dt.AsEnumerable() where 
        Convert.ToDateTime(r["b"]) == Convert.ToDateTime("01/01/2001") 
        select r;

System.Diagnostics.Debug.WriteLine(p.ToList()[0][0]); 

作品:Convert.ToDateTime(r["b"])

失败Convert.ToDateTime(r["c"])

答案 1 :(得分:0)

基本上这意味着SqLite不理解Convert.ToDateTime函数。这是在游戏中的延迟执行。

您可以在过滤结果之前先强制执行。仅在表不大时使用,因为它将获得所有重新记录,然后进行过滤。

尝试以下方法:

from x in db.Table<FicheTechnique>().ToList()
                    .Where Convert.ToDateTime(x.FirstDate) <= Convert.ToDateTime(newDate)
                    .Select x;