【发布时间】:2019-04-11 05:33:15
【问题描述】:
我有一个相当大的字符串列表 (30k+),我需要使用 Entity Framework Core 检查表中不存在哪些字符串。
类似这样,但没有为每个项目发送检查请求:
var notFoundItems = hugeList.Where(c => !tableToCheck.Any(x => x.Id == c)).ToList();
我找到了答案,但使用的是T-SQL
【问题讨论】:
-
我不确定,但我认为 LINQ 不会为每个项目生成查询。你检查了吗?
-
好吧,至少这是我的 EF Core Oracle 驱动程序正在执行的操作
-
您应该创建一个临时表(或永久表),清空并上传
hugeList并在服务器端进行检查。该 T-SQL 解决方案将具有相同的参数限制问题 - 我知道,您不能在单个查询中传输 30k 的字符串。您可以一次将它们批处理成 2000 个参数,但我认为这足够大,不能这样做。
标签: c# entity-framework linq entity-framework-core ef-core-2.1