【发布时间】:2021-11-29 13:57:39
【问题描述】:
我想在 C# 中将此 SQL 查询转换为 Linq:
select
count(*),
FORMAT (CreatedDate, 'MM') as months,
FORMAT (CreatedDate, 'yyyy') as year
from
ProviderPosts
group by
FORMAT (CreatedDate, 'MM'),
FORMAT (CreatedDate, 'yyyy')
【问题讨论】:
-
如果没有 EF DbContext 设置,您无法将 SQL 转换为 Linq。您尚未发布有关如何设置实体框架的任何详细信息,因此我们无法为您提供帮助。
-
另外,SQL Server 中的
FORMAT真的很慢:CONVERT要快得多(尽管灵活性要低得多),但无论如何你正在做的是最慢的分组方式之一-by-months,而是只使用YEAR( CreatedDate )和MONTH( CreatedDate )(因为它们返回int值)而不使用FORMAT或CONVERT(也不是CAST)(这是不合适的,因为你在格式化文本时你应该只关心数值)。 -
我把它改成了month()和year()谢谢你,但是我想把它转换成linQ,你能帮我吗?
-
我刚刚解释了为什么我们不能帮助你:因为你还没有发布你的
DbContext的详细信息。 -
@Dai 真的吗?将 LINQ 转换为 SQL 的唯一方法是使用 EF?