目前业务上需要对时间进行搜索,比如输入“2012-05”,就能搜出“2012-05-07”,"2012-05-01"等等数据。
在MySql数据中可以直接写SQL语句:Date Like '%2012-05%',可是在Linq To Entity中需要怎么写才能让他生成这个SQL??
(1)、where m.DateTime.IndexOf("2012-05")>-1 从左开始判断,过滤起始是"2012-05"的。
(2)、where m.DateTime.Contains("2012-05") 这个相当于SQL中的'%内容%'
你加上这个试试看行不行
DateTime 根本没有IndexOf,Contains这些方法....
@Xiongpq: 真不知道怎么说你才好,上面语句中的 DateTime 是字段,我只是打了个比方。你换成字段试试。
@百灵: 我明白你的意思,我就是说换成DateTime类型的字段不行
.DateTime.Contains("2012-05")
方法1:分开比较m.DateTime.year ==XX and m.DateTime.month==XX
方法2取回来到本地,在本地后就可以用IndexOf,Contains这些方法
我也是刚学linq,只作参考啊
1.没法判断用户输入的是年还是月;
2.我的数据量非常大,需要在数据库中分页,如果都取回本地,资源消耗很大;
1. 是把这个2012-05在c#中转换成字符串,然后再用上面的2个方法比较
where m.DateTime > new DateTime( 2012, 5, 1)
没法判断用户输入的是年还是月;
时间判断的话
可以考虑条件写成大于2012-05-01并小于2012-05-31