gpt4 book ai didi

c# - LINQ where db table does not contain in memory list elements

转载 作者:太空宇宙 更新时间:2023-11-03 17:05:51 25 4
gpt4 key购买 nike

我看过these StackOverflow Answers但是当过滤列表在内存中时,它们不会产生相同的结果。

我有一个 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 形式,或者这些是唯一的解决方案吗?

最佳答案

怎么样

var providersInDb = (from provider in JobProviders
where providerIds.Contains(provider.JobProviderID)
select provider.JobProviderID).ToList();

var missingProviders = providerIds.Where(p => !providersInDb.Contains(p))

关于c# - LINQ where db table does not contain in memory list elements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16532707/

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