gpt4 book ai didi

entity-framework - 如何在 C# EF Core 查询中将字符串转换为 DateTime

转载 作者:行者123 更新时间:2023-12-03 17:00:56 26 4
gpt4 key购买 nike

var res = Context.Exampletable
.Where(s => s.CompanyId == CompanyId &&
Convert.ToDateTime(s.TextDate) >= DateTime.Now)
.Select(x => new Exampletable { TextDate = x.TextDate })
.FirstOrDefault();

这是我的问题陈述之一的 Linq。我想从当前日期和时间戳中获取记录 future 日期记录,所以我将它转换并与 Datetime 进行比较。但我收到此错误:

The LINQ expression 'DbSet
.Where(a => Convert.ToDateTime(a.TextDate) > Convert.ToDateTime(DateTime.Now))' > could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to either AsEnumerable(), AsAsyncEnumerable(), ToList(), or ToListAsync()



注意:在 Postgresql 数据库中 TextDate列具有字符串数据类型并包含诸如“4/1/2020 10:00 AM”之类的值。

请为此提供解决方案。

最佳答案

如果你真的不能改变底层的列类型,那么代替不受支持的 Convert.ToDateTime使用映射到 PostgreSQL 的 C# 转换运算符 CAST运算符(operator):

(DateTime)(object)s.TextDate >= DateTime.Now

请注意,“中级”强制转换为 object只是为了让 C# 编译器满意。

附言我真的不知道为什么 Convert的一些方法喜欢 ToInt32支持,以及其他类似 ToDateTime不是。我想这只是另一个 EF Core 不一致。

关于entity-framework - 如何在 C# EF Core 查询中将字符串转换为 DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60969027/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com