SELECT * FROM AT where CONVERT(varchar,DateTime) like '%2011-%' 转成linq怎么写?

如题所述

首先明确一条,楼上的同学的作法是可以的。
然后说正事。

楼主的sql写的不好,不建议这样写,因为使用CONVERT将日期列转换为字符串后再匹配的话,会导致数据库索引失效(如果有的话),进而导致全表扫描。并且由于“2011-”这样的字符串依赖于操作系统的本地化设置,如果不在转换的时候限制格式,那么可能会换个操作系统就导致sql失效。LINQ中是没法限制这个格式的。
所以正确的作法是,应该取2011-1-1到2011-12-31之间的记录,也就是这样的SQL:
select * from AT where DateTime>='2011-1-1' and DateTime<='2011-12-31'

写成LINQ就是这样的:
from a in AT where a.DateTime>=new DateTime(2011,1,1) && a.DateTime<=new DateTime(2011,12,31) select a
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-09
from a in AT
where a.Datetime.ToString().Contains("2011-")
select a
相似回答