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

 我来答
FantasyChump
2011-05-09 · TA获得超过3288个赞
知道大有可为答主
回答量:2127
采纳率:0%
帮助的人:2251万
展开全部
首先明确一条,楼上的同学的作法是可以的。
然后说正事。

楼主的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
随风z9pd
2011-05-09 · TA获得超过777个赞
知道小有建树答主
回答量:442
采纳率:0%
帮助的人:587万
展开全部
from a in AT
where a.Datetime.ToString().Contains("2011-")
select a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式