1

日付である文字列を比較したい。linqクエリを実行しようとしていますが、string型からstring型のオペランドに演算子を適用できます。

    var descriptions = 
        from a in db.Descriptions 
        where a.ID == 12  
        && a.arrivalDate >= "20110101000000" 
        && a.arrivalDate <= "20110131000000" 
        select a; 

何か案は?

4

4 に答える 4

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; 
于 2012-05-10T14:05:34.970 に答える
2
var descriptions = db.Descriptions.Where(a => 
                     a.ID == 12 && 
                     a.arrivalDate >= Convert.ToDateTime("20110101000000") &&
                     a.arrivalDate <= Convert.ToDateTime("20110131000000"));
于 2012-05-10T13:59:54.337 に答える
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; 
于 2012-05-10T14:02:14.583 に答える
1

文字列クラスは>=または<=をオーバーライドしません。静的なString.Compare(string、string)メソッドを使用する必要があります。

于 2012-05-10T13:59:47.160 に答える