Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取Lambda表达式中的字符串范围_C#_Linq_Entity Framework_Linq To Entities - Fatal编程技术网

C# 获取Lambda表达式中的字符串范围

C# 获取Lambda表达式中的字符串范围,c#,linq,entity-framework,linq-to-entities,C#,Linq,Entity Framework,Linq To Entities,我想使用Lambda表达式进行查询,以获取结果集在特定范围内的值。数据库中的值类型字符串,用于存储日期值。 在SQL中,between运算符使用此值,但不使用Lambda表达式。我用这个问题作为指导 代码: IQueryable q=db.bankmedstations.Where(u=>DateTime.Parse(u.fServiceDate)>=DateTime.Parse(newStartDate)); 错误: LINQ to Entities无法识别方法“System.DateTim

我想使用Lambda表达式进行查询,以获取结果集在特定范围内的值。数据库中的值类型字符串,用于存储日期值。 在SQL中,between运算符使用此值,但不使用Lambda表达式。我用这个问题作为指导

代码:
IQueryable q=db.bankmedstations.Where(u=>DateTime.Parse(u.fServiceDate)>=DateTime.Parse(newStartDate));
错误: LINQ to Entities无法识别方法“System.DateTime Parse(System.String)”方法,并且无法将此方法转换为存储表达式


这里我遗漏了什么?

这里的问题是,当您获得IQueryable时,代码实际上是针对数据库执行的,并且被延迟。所以问题是SQL没有一个名为DataTime.Parse的方法。

您可以使用该方法检查服务器端的日期差异:

IQueryable<BankmedStatments> q = 
  db.BankmedStatments.Where(u => SqlFunctions.DateDiff("ms", u.fServiceDate, newStartDate) > 0);

当然,考虑使用适当的数据类型来存储数据库中的日期。< /P>我将如何工作?我认为ATLULL @ VLADMIR是一个可以考虑的选项。问题是,您的日期以字符串的形式公开,并且您正在对其进行DateTime.Parse。如果将属性公开为日期,则可以消除DateTime.Parse,只需使用直接日期比较即可。谢谢,这样做非常省力
IQueryable<BankmedStatments> q = 
  db.BankmedStatments.Where(u => SqlFunctions.DateDiff("ms", u.fServiceDate, newStartDate) > 0);
 SELECT 
    [Extent1].[Id] AS [Id], 
    [Extent1].[fServiceDate] AS [fServiceDate]
 FROM [dbo].[BankmedStatments] AS [Extent1]
 WHERE (DATEDIFF(ms, [Extent1].[fServiceDate], @date)) > 0