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

本文关键字:日期 时间 转换 字符串 LINQ | 更新日期: 2023-09-27 18:17:52

跟随我的问题:

有一个包含所有 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。

我想要的输出:

  • 仅加载当天记录

输入:

  • 项目。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;

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

我假设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;
DateTime.ParseExact(x, "yyyyMMdd",cultureInfo.InvariantCulture) 

将有助于在日期时间中转换字符串