LINW到SQL查询中的字符串BETWEEN运算符

时间:2017-07-31 17:17:52

标签: linq linq-to-sql

from p in table
where ID == 201
&& date => 20160601
&& date <= 20160901
select {ID, name};
q.Dump();

数据库中的日期采用字符串简单格式。 我试图将SQL查询转换为LINQ。在SQL中,BETWEEN运算符用于选择给定范围内的值。但是,BETWEEN不能与LINQ语句一起使用,所以我收到的错误是=&gt;不能应用于日期字段的字符串类型操作数和int。任何帮助都会被挪用。我尝试了DateTime,但它对我没用。

2 个答案:

答案 0 :(得分:1)

由于LINQ to Entities不支持Convert.ToDateTime(为什么不支持?)并且您的日期格式采用合理的字符串格式,因此您可以将其作为字符串进行比较:

from p in table
where ID == 201
&& date.CompareTo("20160601") >= 0
&& date.CompareTo("20160901") <= 0
select { ID, name };

答案 1 :(得分:0)

试试这个有效的代码:

var q = from p in table
where p.ID == 201
&& p.date >= DateTime.ParseExact("20160601", "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture)
&& p.date <= DateTime.ParseExact("20160901", "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture)
select p;
q.Dump();