gpt4 book ai didi

select - 如何识别 EF Core 3.1 中的重复项

转载 作者:行者123 更新时间:2023-12-04 04:13:38 30 4
gpt4 key购买 nike

问题如下:

我已经将项目更新到 EF Core 3.1我在公司数据库中显示重复电子邮件地址的代码停止工作。此代码在更新后不再有效:

cos = cos.Where(x => !string.IsNullOrEmpty(x.Email)).GroupBy(c => c.Email).Where(c => c.Count() > 1).SelectMany(grp => grp);

return View(await cos.ToListAsync());

我认为这是问题所在:

在 EF Core 3.0 之前,这是隐式完成的,因此 EF 下载所有结果行,然后应用 LINQ GroupBy。但是,这种隐式行为可能会让程序员期望整个 LINQ 查询都在 SQL 中执行,当结果集相当大时,可能会对性能产生巨大影响。因此,在 EF Core 3.0 中完全禁用了 GroupBy 的隐式客户端评估。

您知道如何修改上午代码以使用 EF Core 3.1 吗?感谢您的帮助。

最佳答案

可以替换group -> count -> ungroup查询操作

.GroupBy(c => c.Email).Where(c => c.Count() > 1).SelectMany(grp => grp)

目前无法翻译成 SQL(并且将来也没有很好的潜在 SQL 翻译),自子查询计算“关键”匹配,例如

.Where(c => cos.Count(c1 => c1.Email == c.Email) > 1)

关于select - 如何识别 EF Core 3.1 中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61211283/

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