如何在C#中使用LINQ从一个列表中获取不在另一个列表中的元素?
大家好!我是一名初学C#的开发者,在处理集合时遇到了一个问题。有两个相同类型的对象列表。假设我有一个包含Id和Name字段的Product类。第一个列表(listA)包含数据库中的所有产品,第二个列表(listB)是用户已选择用于订单的产品列表。我需要获取第三个列表(listC),它只包含listA中不在listB中的产品。
我尝试过使用foreach循环并检查Contains,但这看起来冗长且不优雅。而且,当列表很大时,这样的代码运行缓慢。我听说LINQ可以优雅且快速地完成这类操作。请告诉我如何正确编写查询以获取第二个列表中不存在的元素?重要的是,比较应基于Id,因为Name可能重复。
我的数据结构示例:
List listA = new List
{
new Product { Id = 1, Name = "牛奶" },
new Product { Id = 2, Name = "面包" }
};