Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
Linq 将字符串解析为表达式中的DateTimeOffset<;Func<;T、 布尔>&燃气轮机;_Linq_Linq To Sql_.net 3.5_Datetimeoffset - Fatal编程技术网

Linq 将字符串解析为表达式中的DateTimeOffset<;Func<;T、 布尔>&燃气轮机;

Linq 将字符串解析为表达式中的DateTimeOffset<;Func<;T、 布尔>&燃气轮机;,linq,linq-to-sql,.net-3.5,datetimeoffset,Linq,Linq To Sql,.net 3.5,Datetimeoffset,嘿,我正在尝试创建一个表达式,其中字符串属性被转换/转换为DateTimeOffset,以便可以对其执行DateTimeOffset操作 我们使用Linq2SQL作为数据提供程序,它支持将字符串转换为与DateTimeOffset等效的SQL。理想情况下,我希望表达式直接在IQueryable数据源中求值,而不是作为IEnumerable在内存中求值 请参阅下面的示例,了解我迄今为止所做的尝试: public class MyClass { public string MyValue;

嘿,我正在尝试创建一个
表达式
,其中字符串属性被转换/转换为DateTimeOffset,以便可以对其执行DateTimeOffset操作

我们使用Linq2SQL作为数据提供程序,它支持将字符串转换为与DateTimeOffset等效的SQL。理想情况下,我希望表达式直接在IQueryable数据源中求值,而不是作为IEnumerable在内存中求值

请参阅下面的示例,了解我迄今为止所做的尝试:

public class MyClass
{
    public string MyValue;
}

Expression<Func<MyClass, bool>> filter = mc => DateTimeOffset.Parse(mc.MyValue) > new DateTimeOffset(2007,1,1);
公共类MyClass
{
公共字符串MyValue;
}
表达式filter=mc=>DateTimeOffset.Parse(mc.MyValue)>newdatetimeoffset(2007,1,1);

不幸的是,此筛选器定义会导致内存中的计算。

由于底层物理表列是
nvarchar
而不是
datetime
,我认为您运气不好。LINQ2SQL提供程序知道它是
nvarchar
数据,因此不会生成将其作为
datetime
值处理的本机SQL表达式


老实说,我甚至找不到一种安全的方法来处理原始手工制作的
SqlCommand
对象。您确实应该将数据作为
字符串
读入内存,然后将其转换为
日期时间偏移量
,然后在内存中手动过滤。如果要在此列上进行本机SQL筛选,则需要更改表架构。

由于基础物理表列是
nvarchar
而不是
datetime
,我认为您运气不好。LINQ2SQL提供程序知道它是
nvarchar
数据,因此不会生成将其作为
datetime
值处理的本机SQL表达式


老实说,我甚至找不到一种安全的方法来处理原始手工制作的
SqlCommand
对象。您确实应该将数据作为
字符串
读入内存,然后将其转换为
日期时间偏移量
,然后在内存中手动过滤。如果要在此列上进行本机SQL筛选,则需要更改表架构。

我很困惑。物理表列是一个
char
还是一个
datetime
?在SQL中,该列是一个字符串(我相信是nvarchar),我很困惑。物理表列是一个
char
还是一个
datetime
?在SQL中,该列是一个字符串(我相信是nvarchar)