Avatar ·

Como obter em C# com LINQ elementos de uma lista que não estão em outra lista?

Olá a todos! Sou um desenvolvedor C# iniciante e tive um problema ao trabalhar com coleções. Existem duas listas de objetos do mesmo tipo. Suponha que eu tenha uma classe Product com campos Id e Name. A primeira lista (listA) contém todos os produtos do banco de dados, e a segunda lista (listB) é a lista de produtos que o usuário já selecionou para o pedido. Preciso obter uma terceira lista (listC) que contenha apenas os produtos de listA que não estão em listB. Tentei usar um loop foreach e verificar com Contains, mas isso parece complicado e deselegante. Além disso, quando as listas são grandes, esse código fica lento. Ouvi dizer que LINQ permite fazer essas coisas de forma elegante e rápida. Por favor, me digam como escrever corretamente uma query para obter os elementos ausentes na segunda lista? É importante que a comparação seja feita por Id, pois Name pode se repetir. Exemplo da minha estrutura de dados: List listA = new List { new Product { Id = 1, Name = "Leite" }, new Product { Id = 2, Nam