2017-10-04 20 views
-3

我在我的数据库中有字符串格式的“timein”和“timeout”,我需要帮助,因为我不知道逻辑。MVC字符串和时间比较<= > =

是这样的:

 Entity.time a; 

     using (var b = new Entity.DatabaseEntities()) 
     { 
      a = b.times.Where(v => Convert.ToDateTime(v.timein) <= Convert.ToDateTime(DateTime.Now.ToString("hh:mm")) && Convert.ToDateTime(v.timeout) >= Convert.ToDateTime(DateTime.Now.ToString("hh:mm"))).FirstOrDefault(); 

     }   

回答

0

timeintimeout会更适合于数据库类型Time和.NET类型TimeSpan。假设这些字符串的格式为HH:mm,那么您应该进行字符串比较,并且不要在查询中转换任何内容,这样查询就可以实现。如果他们是另一种格式,您将不得不用一些示例数据更新问题。

您的查询不起作用的原因是因为表达式需要能够转换为SQL语句,而不是所有事情(实际上大多数类型/方法)都不可转换。

Entity.time a; 
using (var b = new Entity.DatabaseEntities()) 
{ 
    var timeOfDay = DateTime.Now.ToString("HH:mm"); 
    a = b.times.FirstOrDefault(v => 
     string.Compare(v.timein, timeOfDay) >= 0 
     && string.Compare(v.timeout, timeOfDay) <= 0); 
} 

有关受支持的规范方法/函数的列表,请参阅Canonical Functions

另请参阅string.Compare以便您了解它的工作原理。

+0

非常感谢@Igor先生帮助我了解问题 – Amits

相关问题