数据库字段Date是Char类型的,现在用Linq取到该字段的值比较是否大于当前日期如何写.
Convert.ToDateTime(Date)>=DateTime.Now
报了这么一个错误信息.其他信息: LINQ to Entities 不识别方法“System.DateTime ToDateTime(System.String)”,因此该方法无法转换为存储表达式。
Date字段用CHAR类型本身就是No zuo no die.
不过已经这样了,那你只能是类似这样比较了,
Date>=String.Format(DateTime.Now, "yyyy-MM-dd")
错误 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
@ssh800: 唉,我瞎写的,你得自己看看具体是怎么写才对,大概意思就是把日期转为字符型
再比较。
@爱编程的大叔: 哎实在不行只能调存储不用LINQ了
@爱编程的大叔: 即使转成string类型的也不能使用>=号来比较吧
@ssh800:
要求日期必须是这样的:“2014-08-09”或是"20140809",这样可以使用>=比较的,
如果月份或是日期只用单个数字就不行,比如“2014-8-9”就不行。
@爱编程的大叔: 错误 1 运算符“>=”无法应用于“string”和“string”类型的操作数 F:\Bll\GetTC.cs 32 101 Bll
为啥会有这种提示呢?
在linq 外面定义个 dateTime dt=Convert.ToDateTime(Date), 在把 dt放进去linq,linq里面一般都说不支持C#的类型转换方法
放到外边定义就复杂了,这个字段来自数据库还有其它好办法吗
@ssh800: 是数据库里面的,用存储过程比较靠谱。linq用的少,就知道写类型转换报错,处理的方法就是把需要转换的放在linq外面
表达式里这么写显然有问题,如果想偷懒的写法,在比较类中多加一个public DateTime PropName{get{return "你的那个字符型时间属性的转换和空值处理"}属性,再用它比较PropName>=DateTime.Now
怎么解决的
DbFunctions.DiffDays(o.Data, beginDate) <= 0 &&
DbFunctions.DiffDays(o.Data, endDate) >= 0