LINQ到SQL查询中字符串的中间运算符 来自表中的p 其中ID==201 &&日期=>20160601 &&日期

LINQ到SQL查询中字符串的中间运算符 来自表中的p 其中ID==201 &&日期=>20160601 &&日期,linq,linq-to-sql,Linq,Linq To Sql,由于LINQ to Entities不支持转换.ToDateTime(为什么不支持?)并且您的日期格式是合理的字符串格式,因此您可以将其作为字符串进行比较: from p in table where ID == 201 && date => 20160601 && date <= 20160901 select {ID, name}; q.Dump(); 来自表中的p 其中ID==201 &&日期比较(“20160601”)>=0 &&date.C

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

from p in table
where ID == 201
&& date => 20160601
&& date <= 20160901
select {ID, name};
q.Dump();
来自表中的p
其中ID==201
&&日期比较(“20160601”)>=0
&&date.CompareTo(“20160901”)尝试以下工作代码:

from p in table
where ID == 201
&& date.CompareTo("20160601") >= 0
&& date.CompareTo("20160901") <= 0
select { ID, name };
var q=来自表中的p
其中p.ID==201
&&p.date>=DateTime.ParseExact(“20160601”,“yyyyymmdd”,System.Globalization.CultureInfo.InvariantCulture)

&&p.date不是
=>
,而是
=
<代码>=>
是为lambdas设计的。你的意思是这样吗?日期=>.20160601是的,应该是
日期>=20160601
它不工作。获取相同的错误。>=不能应用于LINQ中的字符串或int,这意味着
date
现在是一个字符串。您必须解析它以获得整数或强制转换为
20160601
,因此它是一个字符串。通常情况下,您会使用类来完成这样的任务,以避免出现类似这样的问题。当我尝试使用convert.ToDateTime运行该任务时,会出现错误。“LINQ to Entities无法识别方法'System.DateTime ToDateTime(System.String)'方法,此方法无法转换为存储表达式。”这令人失望-LINQ to SQL处理得很好。。。答案已更新。
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();