gpt4 book ai didi

c# - 我的 EF 查询有什么问题?

转载 作者:太空宇宙 更新时间:2023-11-03 13:55:41 24 4
gpt4 key购买 nike

我有一个大问题。我无法弄清楚我的 LINQ 查询有什么问题。这是完成工作的 SQL 查询:

SELECT     TOP (100) PERCENT MIN(DateTime) AS DateTime, ETAG
FROM dbo.Table
GROUP BY ETAG, LEFT(DateTime, 10)
ORDER BY ETAG

这个查询在执行时给我大约 50k 个结果。我想要 LINQ 中的相同内容。这是我尝试过的:

from d in Table
group d by new { d.ETAG, Date = d.DateTime.Value.Year + d.DateTime.Value.Month + d.DateTime.Value.Day } into g
orderby g.Key.ETAG
select g.OrderBy(e => e.DateTime).FirstOrDefault()

当我执行此操作时,只需几分钟即可完成,并给出了大约 9k 个结果。出了点问题,但我不知道是什么。请帮我解决这个问题...提前致谢

最佳答案

根据您的两个查询,您的 LINQ 语句中的分组依据根本不同,因为您不是按实际日期分组,而是按年、月和日的整数总和分组。

相反,试试这个:

from d in Table
group d by new { d.ETAG, Date = date.DateTime.Value.Date } into g
orderby g.Key.ETAG
select g.OrderBy(e => e.DateTime).FirstOrDefault()

<罢工>

编辑

不幸的是,由于 Entity Framework 的限制,上述查询将不起作用(即使它在 LINQ to SQL 中有效)。事实上,使用 Entity Framework 并没有高效的并行 SQL 查询。使用 LINQ 表达式获得所需输出的唯一选择是使用 .ToList() 捕获所有记录在对它们进行分组和转换之前。不理想,但它会起作用。

from d in Table.ToList()
group d by new { d.ETAG, Date = date.DateTime.Value.Date } into g
orderby g.Key.ETAG
select g.OrderBy(e => e.DateTime).FirstOrDefault()

关于c# - 我的 EF 查询有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12287414/

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