从linq中不包含特定项目的列表中选择

时间:2016-06-14 11:24:01

标签: linq linq-to-entities

我有两节课。

public class Category
{
   public int Id {get;set;}
   public string Name{get;set;}
}
public class Product
{
   public int ProductId{get;set;}
   public string Name{get;set;}
   public List<Category> ProductCategory {get;set;}
}

现在我有基于我需要获得产品的分类列表

List<string> filtercategory ={"HomeMade","Uncooked"}.

我需要所有不属于HomeMade&#39;的产品。和&#39;未煮熟的&#39;。

这对linq查询逻辑应该是什么?

感谢。

1 个答案:

答案 0 :(得分:0)

您只需使用Where

进行过滤即可
List<Product> productList = GetProducts();
var filteredProducts = productList
                         .Where(p => p.ProductCategory
                                      .All(pc => !filtercategory.Contains(pc.Name)))
                         .ToList();

这会过滤productList,只会在filtercategory中仅包含所有类别名称​​未包含的产品。

我只在linq-to-sql中测试了这个,而不是实体,所以我不能100%确定这对于实体也适用。