Entity Framework IQueryable - 具体日期
Entity Framework IQueryable - specific date
我正在尝试过滤特定日期的数据行:
当前代码采用 的字典,并将过滤器应用于可查询,如下所示:
queryable = pageSettings.FiltersDictionary.Aggregate(queryable, (current, keyValuePair) =>
current.Where(keyValuePair.Key + ".ToString()" + ".Contains(\"" + keyValuePair.Value + "\")"));
由此生成的 SQL 将应用以下 WHERE 子句:
WHERE CAST( [Extent1].[TimeStarted] AS nvarchar(max)) LIKE N'%2015-05-05%'}
正在使用
SELECT CONVERT(nvarchar(max), getdate())
要查看 SQL 服务器如何构建其转换后的日期时间,我们可以看到它永远不会排队,因为它的格式如下:
May 18 2016 3:55PM
我尝试向 DateTime 类型的属性添加自定义 where 子句,但是,"LINQ to Entities" 似乎不喜欢 'ToString("MMMM-DD-YYY")' 调用并生成错误。
我希望能够提供一个日期,例如 2015-05-05 并将其设置为 2015 年 5 月 5 日 - 我是否遗漏了一些明显的东西来让它工作?
以下(基本)示例解决了我的问题:
DateTime givenDate = DateTime.Parse(pair.Value);
string dateTimeConverted = givenDate.ToString("MMMM d yyyy");
queryable = queryable.Where(pair.Key + ".ToString()" + ".Contains(\"" + dateTimeConverted + "\")");
注意月和日之间的两个空格,因为 SQL 服务器似乎也有,这是 "LIKE" 子句匹配任何内容所必需的。
我正在尝试过滤特定日期的数据行:
当前代码采用 的字典,并将过滤器应用于可查询,如下所示:
queryable = pageSettings.FiltersDictionary.Aggregate(queryable, (current, keyValuePair) =>
current.Where(keyValuePair.Key + ".ToString()" + ".Contains(\"" + keyValuePair.Value + "\")"));
由此生成的 SQL 将应用以下 WHERE 子句:
WHERE CAST( [Extent1].[TimeStarted] AS nvarchar(max)) LIKE N'%2015-05-05%'}
正在使用
SELECT CONVERT(nvarchar(max), getdate())
要查看 SQL 服务器如何构建其转换后的日期时间,我们可以看到它永远不会排队,因为它的格式如下:
May 18 2016 3:55PM
我尝试向 DateTime 类型的属性添加自定义 where 子句,但是,"LINQ to Entities" 似乎不喜欢 'ToString("MMMM-DD-YYY")' 调用并生成错误。
我希望能够提供一个日期,例如 2015-05-05 并将其设置为 2015 年 5 月 5 日 - 我是否遗漏了一些明显的东西来让它工作?
以下(基本)示例解决了我的问题:
DateTime givenDate = DateTime.Parse(pair.Value);
string dateTimeConverted = givenDate.ToString("MMMM d yyyy");
queryable = queryable.Where(pair.Key + ".ToString()" + ".Contains(\"" + dateTimeConverted + "\")");
注意月和日之间的两个空格,因为 SQL 服务器似乎也有,这是 "LIKE" 子句匹配任何内容所必需的。