gpt4 book ai didi

c# - 如何在 LINQ 中使用表字段创建新的 DateTime where 条件

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:48 25 4
gpt4 key购买 nike

我在 c# 中有一个 win 应用程序,我将在其中获得一个 linq 查询,其中包含由表字段连接的数据的 where 条件。我的查询是:

var fatture = (from t016 in cont.T016_FATT
where t016.ID_FATTURA = aiIdFattura
&& Convert.toDateTime("01" + t016.COD_MESE+"/"+t016.ANNO) > aiData
select t016).ToList();

其中 t016.COD_MESE 是表示月份值的字符串,aiIdFattura 是函数中传递的十进制参数,aiData 是 DateTime 参数。

但是这个 linq 查询给了我这个错误:

LINQ to Entities does not recognize the method Convert.ToDateTime

我在互联网上找到了一个建议使用 EntityFramework(版本 6)中存在的 DBFunctions 的解决方案,但我有一个次要版本的 EntityFramework,所以我不能使用这个函数。

另一个找到的解决方案是在 linq 查询之前格式化日期,但在我的情况下是不可能的,因为取决于 T016_FATT,所以我不能先格式化我的日期。

所以你有什么想法可以建议我吗?

非常感谢

最佳答案

请记住,您的查询将被转换为 SQL,在这种情况下,您的 Linq 提供程序不知道如何将该方法调用转换为 sql 语句。为避免该问题,您可以使用 AsEnumerable 扩展方法将 Linq to Entities 切换为 Linq to Objects。调用该方法后,您可以应用日期转换:

var fatture = cont.T016_FATT.Where(e=>e.ID_FATTURA == aiIdFattura)
.AsEnumerable()
.Where(e=>Convert.toDateTime("01" +"/"+ e.COD_MESE+"/"+e.ANNO) > aiData)
.ToList();

如果您想查看 Linq to Entities 支持的方法,可以查看此 link .

关于c# - 如何在 LINQ 中使用表字段创建新的 DateTime where 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36335366/

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