Linq to Entities DateTime转换

LB.*_*LB. 4 linq datetime linq-to-entities

如果给定一个将DateTime作为字符串的实体,那么我可以选择在日期使用LINQ to Entities过滤数据?

它似乎不支持我做DateTime转换.

基本上,我想完成:

var filtered = from item in entities.itemsSet
               where Convert.ToDateTime(shift.starttime) >= startDate 
                   && Convert.ToDateTime(shift.endtime) < endDate
               select item;
Run Code Online (Sandbox Code Playgroud)

我有什么选择来实现这一目标?

Mar*_*110 6

使用System.Data.Objects.SqlClient.SqlFunctions

有一个名为DateDiff的函数,它具有接受字符串作为日期的重载.

SqlFunctions类中的所有函数都编译为SQL语句,并且只能在Linq中用于实体.

[EdmFunctionAttribute("SqlServer", "DATEDIFF")]
public static Nullable<int> DateDiff(string datePartArg, string startDate, string endDate)
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-us/library/dd466158.aspx

您需要传入一个像"day"这样的字符串作为第一个参数,指定要比较的日期部分.该函数直接映射到SQL函数DATEFIFF:

http://msdn.microsoft.com/en-us/library/ms189794.aspx

Linq to SQL有一个类似的类,只是警告你.