繁体   English   中英

Linq比较字符串日期

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM