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;
我假设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)
将有助于在日期时间中转换字符串