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)