我想比较日期的字符串。我正在尝试跟随linq查询,但我得到的运算符可以应用于string类型的字符串操作数。
var descriptions =
from a in db.Descriptions
where a.ID == 12
&& a.arrivalDate >= "20110101000000"
&& a.arrivalDate <= "20110131000000"
select a;
有什么想法吗?
答案 0 :(得分:3)
您无法将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;
答案 1 :(得分:2)
var descriptions = db.Descriptions.Where(a =>
a.ID == 12 &&
a.arrivalDate >= Convert.ToDateTime("20110101000000") &&
a.arrivalDate <= Convert.ToDateTime("20110131000000"));
答案 2 :(得分:2)
听起来我想要比较日期,而不是字符串。
"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;
答案 3 :(得分:1)
字符串类不会覆盖&gt; =或&lt; =。您需要使用静态String.Compare(string,string)方法。