我有两个ID列表,我需要返回一个列表,其中包含不在这些列表中的产品:
public IEnumerable<Produto> GetProdutosIdNotInFamily(Guid produtoId)
{
var produtosPai = GetListaPaisId(produtoId);
var produtosFilho = GetListaFilhosId(produtoId);
var prod = _dbContext.Produtos
.Where(u => !produtosPai.Any(p => p.ProdutoFilhoId == u.Id)
&& !produtosFilho.Any(p => p.ProdutoFilhoId == u.Id));
return prod;
}
1条答案
按热度按时间pwuypxnk1#
你可以用两种方法来实现这一点——一种是使用
Contains
以及其他用途Any
就像你在帖子里提供的。使用contains方法
如果你想用
Contains()
方法时,您可能会将所有产品标识提取到一个集合中,并在其上应用linq,然后获取不属于两个引用列表的列表。示例代码如下所示var products = _dbContext.Produtos;
var exclusionList1 = GetListaPaisId(produtoId);
var exclusionList2 = GetListaFilhosId(produtoId);
var prod = _dbContext.Produtos.Where(x => !exclusionList1.Any(z => x.Id == z.Id) &&
!exclusionList2.Any(z => x.Id == z.Id)).ToList();