[英]Using int.parse(string) in linq search doesn't work
我在C#中使用LINQ搜索。 我的搜索之一需要将string
转换为int
。 当我尝试使用int.parse()
或convert.toInt32()
,它显示错误(在LINQ中无法识别)
例如:
var google = from p in ctx.dates
where int.Parse(p.effDate) < 20101212 && int.Parse(p.effDate) > 20121212
select p;
如您所见,我有一个字符串,其中包含yyyymmdd
格式的日期,我想将其转换为整数,以便在这些日期之间进行搜索。
yyyyMMdd
格式具有很好的属性,即字典顺序与时间顺序相同,因此您可以使用字符串比较:
var google = from p in ctx.dates
where p.effDate.CompareTo("20121212") < 0
&& p.effDate.CompareTo("20101212") > 0
select p;
首先,您不能仅通过将日期转换为int来比较日期,因为在大多数情况下它将失败。 使用DateTime
Parse
或ParseExact
解析字符串并进行比较。
这是因为int.Parse
是客户端调用,Linq提供程序不知道如何将其映射到数据库函数。
由于字符串采用易于排序的格式,因此可以where p.effDate < "20101212" && p.effDate > "20121212"
使用where p.effDate < "20101212" && p.effDate > "20121212"
。
更好的方法是更改数据库以将日期存储在date
列而不是char
或varchar
列中。
最后,我找到了一个不错的答案:
google = from p in ctx.dates
where p.effDate.CompareTo(picker1) > 0 && p.effDate.CompareTo(picker2) <0
select p;
picker1和picker2都是“ yyyymmdd”中的字符串谢谢大家的帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.