[英]Linq compare string date
我想比较日期字符串。 我正在尝试下面的linq查询,但是我可以将运算符应用于字符串到字符串类型的操作数。
var descriptions =
from a in db.Descriptions
where a.ID == 12
&& a.arrivalDate >= "20110101000000"
&& a.arrivalDate <= "20110131000000"
select a;
有任何想法吗?
您不能将DateTime
变量与String
变量进行比较。
因此,您需要首先创建一个DateTime
:
String str1 = "20110101000000";
String str2 = "20110131000000";
String format = "yyyyMMddhhmmss";
DateTime d1 = DateTime.ParseExact(str1, format,null);
DateTime d2 = DateTime.ParseExact(str2, format, null);
和LINQ查询:
var descriptions =
from a in db.Descriptions
let arrivalDate = DateTime.ParseExact(a.arrivalDate, format,null)
where a.ID == 12
&& arrivalDate >= date1
&& arrivalDate <= date2
select a;
var descriptions = db.Descriptions.Where(a =>
a.ID == 12 &&
a.arrivalDate >= Convert.ToDateTime("20110101000000") &&
a.arrivalDate <= Convert.ToDateTime("20110131000000"));
在我看来,您要比较日期而不是字符串。
"20110101000000"
是字符串,而不是日期。
new DateTime(2011, 01, 01)
是一个日期。
var descriptions = from a in db.Descriptions
where a.ID == 12
&& DateTime.Parse(a.arrivalDate) >= new DateTime(2011,1,1)
&& DateTime.Parse(a.arrivalDate) <= new DateTime(2011,1,31)
select a;
字符串类不会覆盖> =或<=。 您需要使用静态的String.Compare(string,string)方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.