from b in session.Query<EquData>() where DateTime.Parse(b.PLAN_DATE) >= start && DateTime.Parse(b.PLAN_DATE) <= end select b;
list = session.Query<EquData>().ToList();
list = list.Where(c => Convert.ToDateTime(c.PLAN_DATE) >= start && Convert.ToDateTime(c.PLAN_DATE) <= end).ToList();
上面那个报错,下面这个可以成功,什么原理。下面这个查询全部再过滤肯定影响性能。求指教。
报的是不支持的方法吧.datetime.parse是不支持的.而且本来你这样的数据库查询就是会全表扫描的.因为你要对字段进行运算索引都没用.最好建一个日期值字段建个索引查
Convert.ToDateTime(也不支持, 还有啥办法吗
.Select(x=>Convert.ToDatetime(x.plandate)>=start),这样也行,只是返回的数据是bool
@lovejean: tolist之后的吗?你想一下在sql里怎么把字符串转日期格式就可以了然后找法子.
仔细想一下就知道了,linq最终还是翻译成sql,你的datetime.parse翻译成什么?
select * from EquData t where t.plan_date between '2015-08-13' and '2015-08-15' 在Oracle数据库中可以执行,怎么翻译成linq
linq中string 和string 不能比较
@lovejean: 那你自己去搜linq oracle 时间比较 不就行了。。。
http://www.itdos.com/CSharp/20150408/0127321.html
Where(a => a.StartTime.CompareTo(
'2015-04-08'
) >= 0)