c# - LINQ - 将字符串转换为日期时间

标签 c# linq

按照我的问题:

我有一个包含所有 nvarchar 列的表,我想只加载当天的记录,如下所示:

 var query = from item in dataContext.Items
             orderby item.CDATE_IUD descending
             where item.QV_USER == user
             where item.QV_EXT == ext
             where item.ACTIVE == 1
             where DbFunctions.DiffDays(Convert.ToDateTime(item.CDATE_IUD), DateTime.Now.Date) == 0
             select item;

我收到一个错误,指出 LINQ 无法识别 ToDateTime。

我想要的输出:

  • 只加载当天的记录

输入:

  • item.CDATE_IUD 是一个字符串,格式如下 dd.mm.yyyy hh:mm:ss(例如 20.07.2015 16:12:48)

如有任何帮助,我们将不胜感激。

更新:

这对我有用:

 string today = DateTime.Now.ToString("dd.MM.yyyy");
 var query = from item in dataContext.Items
             orderby item.CDATE_IUD descending
             where item.QV_USER == user
             where item.QV_EXT == ext
             where item.ACTIVE == 1
             where item.CDATE_IUD.Substring(0,10) == today
             select item;

最佳答案

我假设 item.CDATE_IUD 是日期的字符串表示形式。

Linq to EF 和 Linq to SQL 不支持字符串到日期的转换。您可以在内存中进行转换,但由于您过滤 已解析的值,因此您将提取所有记录。您也许可以改用字符串比较:

string today = DateTime.Today.ToString("yyyy-mm-dd"); // or whatever format your DB string is on.
var query = from item in dataContext.Items
                        orderby item.CDATE_IUD descending
                        where item.QV_USER == user
                        where item.QV_EXT == ext
                        where item.ACTIVE == 1
                        where item.CDATE_IUD.StartsWith(today)
                        select item;

关于c# - LINQ - 将字符串转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33127939/

相关文章:

c# - LINQ 到 SQL : Reusing DataContext

c# - 在 SpecFlow 中,您可以在同一步骤文件中存储多个 Hook 吗

C#:使用 Linq 和 Lambda 获取 2 个集合之间不匹配的元素

c# - Linq to sql查询: how to prevent duplication of code

c# - 无法从用法中推断出类型参数,有人可以帮忙吗?

c# - Entity Framework + LINQ + "Contains"== 超慢?

c# - 如何选择一个里面可能包含相同图案的图案?

c# - 在 Windows Phone 8 中使用静态文本转换器

c# - 编写将为每个列表元素添加值的 LINQ 语句

linq - LINQ 查询返回的 Int 列表