C# 过滤器列表,全部或具有给定值

C# filter list, All or with given value

在我的列表中,每个列表项包含 2 个属性 产品分类 产品编号

在我的商品中,ProductId 和 ProductCategory 均不为 0

如果客户将我发送为 产品编号 = 0 产品类别 = 0

所以必须 return 列表中的所有项目

如果客户将我发送为 产品编号 = 2 产品类别 = 0 我必须 return 所有产品类别中只有 2 个 id 产品

ProductId=0
ProductCategory=2
I must return all of the products in 2 id ProductCategory..

或者 ProductId=3 产品类别=2

 Return productId = 2 in product category 2

如何在不使用 if else 块的情况下实现此代码?我用 4 if/else 块实现了这个,但我想知道有没有更好的方法

你可以用下面的.Where语句实现:

条件:

  1. productId 与 0 匹配或 product.ProductId 等于 productId
  2. 匹配 productCategory 与 0 或 product.ProductCategory 等于 productCategory
  3. 必须同时满足条件 1 和 2。
var products = PRODUCT_LIST
    .Where(x => (productId == 0 || x.ProductId == productId)
        && (productCategory == 0 || x.ProductCategory == productCategory))
    .ToList();