【发布时间】:2013-05-13 23:19:12
【问题描述】:
我见过theseStackOverflowAnswers,但是当过滤列表在内存中时,它们不会产生相同的结果。
我有一个 ID 列表。我想删除数据库中存在的任何 ID,以便留下需要添加的 ID 列表。换句话说,我需要使用 Linq-To-Entities 执行where not in SQL 查询。问题是,这些方法不是产生那个 SQL,而是每个方法产生一个 SQL 查询每个列表项。
var providerIds = new [] {"1130", "1", "16"};
方法一:
var missingProviders = (from provider in providerIds
where !JobProviders.Any(p => p.JobProviderID == provider)
select provider).ToList();
方法二:
var missingProviders = (from provider in providerIds
where !(from p in JobProviders select p.JobProviderID).Contains(provider)
select provider).ToList();
有没有办法构建 LINQ 查询以生成预期的not in 表单,或者这些是唯一的解决方案吗?
【问题讨论】:
-
你找到解决这个问题的方法了吗?
-
@Arthur,不,我没有。我没有使用 LINQ,因为似乎没有办法做到这一点。
标签: c# linq-to-entities