首页 新闻 会员 周边

Linq日期比较

0
[已关闭问题] 关闭于 2014-12-04 14:23

数据库字段Date是Char类型的,现在用Linq取到该字段的值比较是否大于当前日期如何写.

Convert.ToDateTime(Date)>=DateTime.Now

报了这么一个错误信息.其他信息: LINQ to Entities 不识别方法“System.DateTime ToDateTime(System.String)”,因此该方法无法转换为存储表达式。

ssh800的主页 ssh800 | 初学一级 | 园豆:17
提问于:2014-12-02 15:04
< >
分享
所有回答(5)
0

Date字段用CHAR类型本身就是No zuo no die.

不过已经这样了,那你只能是类似这样比较了,

Date>=String.Format(DateTime.Now, "yyyy-MM-dd")

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-12-02 15:08

错误 2 参数 1: 无法从“System.DateTime”转换为“System.IFormatProvider” F:\Bll\GetTC.cs 31 128 Bll

错误 1 与“string.Format(System.IFormatProvider, string, params object[])”最匹配的重载方法具有一些无效参数 F:\Bll\GetTC.cs 31 114 Bll

支持(0) 反对(0) ssh800 | 园豆:17 (初学一级) | 2014-12-02 15:18

@ssh800: 唉,我瞎写的,你得自己看看具体是怎么写才对,大概意思就是把日期转为字符型

再比较。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2014-12-02 15:24

@爱编程的大叔: 哎实在不行只能调存储不用LINQ了

支持(0) 反对(0) ssh800 | 园豆:17 (初学一级) | 2014-12-02 15:58

@爱编程的大叔: 即使转成string类型的也不能使用>=号来比较吧

支持(0) 反对(0) ssh800 | 园豆:17 (初学一级) | 2014-12-02 16:50

@ssh800: 

要求日期必须是这样的:“2014-08-09”或是"20140809",这样可以使用>=比较的,

如果月份或是日期只用单个数字就不行,比如“2014-8-9”就不行。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2014-12-02 16:51

@爱编程的大叔: 错误 1 运算符“>=”无法应用于“string”和“string”类型的操作数 F:\Bll\GetTC.cs 32 101 Bll

为啥会有这种提示呢?

支持(0) 反对(0) ssh800 | 园豆:17 (初学一级) | 2014-12-02 17:06
0

在linq 外面定义个 dateTime dt=Convert.ToDateTime(Date), 在把 dt放进去linq,linq里面一般都说不支持C#的类型转换方法

风醉 | 园豆:1197 (小虾三级) | 2014-12-02 16:24

放到外边定义就复杂了,这个字段来自数据库还有其它好办法吗

支持(0) 反对(0) ssh800 | 园豆:17 (初学一级) | 2014-12-02 16:48

@ssh800: 是数据库里面的,用存储过程比较靠谱。linq用的少,就知道写类型转换报错,处理的方法就是把需要转换的放在linq外面

支持(0) 反对(0) 风醉 | 园豆:1197 (小虾三级) | 2014-12-02 17:07
0

表达式里这么写显然有问题,如果想偷懒的写法,在比较类中多加一个public DateTime PropName{get{return "你的那个字符型时间属性的转换和空值处理"}属性,再用它比较PropName>=DateTime.Now

Halower | 园豆:1723 (小虾三级) | 2014-12-02 17:22
0

怎么解决的

lovejean | 园豆:186 (初学一级) | 2015-10-22 10:42
0

DbFunctions.DiffDays(o.Data, beginDate) <= 0 &&
DbFunctions.DiffDays(o.Data, endDate) >= 0

Afresh | 园豆:204 (菜鸟二级) | 2016-07-29 13:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册