获取错误不能将操作符应用于system.datetime和string类型的操作数

时间:2014-11-06 10:05:31

标签: c# linq date datetime

我正在使用Linq查询但收到错误 Cannot apply operator >= to operands of type system.datetime and string

这是我的linq查询

 var myBirthDate= BirthDate.ToString("yyyy-MM-dd HH':'mm':'ss");

 var myList= (from myEntity in myEntityRepository.AsQueryable()
                                 where
                                     myEntity.id== Id &&
                                     myEntity.birthdate >= myBirthDate
                                 select myEntity).Take(1);

我将日期转换为yyyy-MM-dd HH':'mm':'ss格式,因为我从客户端获取其他格式。

如何避免此错误?

2 个答案:

答案 0 :(得分:1)

使用ToString()方法后,这将导致字符串,而不是日期时间

var myBirthDate= BirthDate.ToString("yyyy-MM-dd HH':'mm':'ss");

使用DateTime.TryParse从客户端提供的值中获取DateTime。然后在查询中使用它。

答案 1 :(得分:1)

如果您收到的日期与当前文化不同,您可以使用DateTime.Parse转换为正确的DateTime变量。

当您使用ToString将DateTime类型转换为格式化的日期字符串时,myBirthDate变量将变为String,因此> =赢得了预期的工作。

以下是一个示例:

using System;

public class Example
{
   public static void Main()
   {
      string[] dateStrings = {"2008-05-01T07:34:42-5:00", 
                              "2008-05-01 7:34:42Z", 
                              "Thu, 01 May 2008 07:34:42 GMT"};
      foreach (string dateString in dateStrings)
      {
         DateTime convertedDate = DateTime.Parse(dateString);
         Console.WriteLine("Converted {0} to {1} time {2}", 
                           dateString, 
                           convertedDate.Kind.ToString(), 
                           convertedDate);
      }                              
   }
}