【发布时间】:2015-02-26 08:03:16
【问题描述】:
我知道已经有很多关于这个问题的帖子,但我似乎无法找到解决方案。
这是我的 Ling to Entities 查询:
IEnumerable<Tblstamp> changes = (from c in userGSN.edb.Tblstamp
where (c.Ts_Date >= userGSN.DateLastCheck &&
TimeSpan.Parse(c.Ts_Time) >= userGSN.TimeLastCheck)
orderby c.Ts_Id ascending
select c);
我想将c.Ts_time 与userGSN.TimeLastCheck 进行比较,但为此我必须将c.Ts_Time 转换为时间跨度(它是一个字符串,来自我无法修改的数据库,尝试了所有方法)。我也无法在查询之前在其他变量中进行转换,因为我无法在查询之外访问它。
显然,尝试在查询中使用 TimeSpan.Parse 方法时出现错误,但我找不到任何解决方法。我曾尝试使用 LINQ to Object,但由于我真的不习惯它,所以无法进行与此处相同的查询。
我知道这个问题,我只是想找到一个解决方法,需要一些帮助!
编辑:
所以我按照建议尝试了DateDiff 函数:
IEnumerable<Tblstamp> changes = (from c in userGSN.edb.Tblstamp
where (c.Ts_Date >= userGSN.DateLastCheck && SqlFunctions.DateDiff("second",userGSN.TimeLastCheck,c.Ts_Time).Value > 0 )
orderby c.Ts_Id ascending
select c
);
但它给了我同样的错误:"LINQ to Entities does not recognize the method 'System.Nullable1[System.Int32] DateDiff(System.String, System.Nullable1[System.TimeSpan], System.String)' method, and this method cannot be translated into a store expression."
尽管它明确表示here“你不能直接调用这个函数。这个函数只能出现在 LINQ to Entities 查询中。”,这正是我正在做的?!
【问题讨论】:
-
你得到什么错误?
-
通常的“LINQ to Entities 无法识别方法 'System.TimeSpan Parse(System.String)' 方法,并且该方法无法翻译成存储表达式。”
-
你可能会逃脱
SqlFunctions.DateDiffmsdn.microsoft.com/en-us/library/dd466158%28v=vs.110%29.aspx -
也许EntityFunctions.DiffDays方法可以帮助你。
标签: c# linq entity-framework