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
语句实现:
条件:
- 将
productId
与 0 匹配或 product.ProductId
等于 productId
。
- 匹配
productCategory
与 0 或 product.ProductCategory
等于 productCategory
。
- 必须同时满足条件 1 和 2。
var products = PRODUCT_LIST
.Where(x => (productId == 0 || x.ProductId == productId)
&& (productCategory == 0 || x.ProductCategory == productCategory))
.ToList();
在我的列表中,每个列表项包含 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
语句实现:
条件:
- 将
productId
与 0 匹配或product.ProductId
等于productId
。 - 匹配
productCategory
与 0 或product.ProductCategory
等于productCategory
。 - 必须同时满足条件 1 和 2。
var products = PRODUCT_LIST
.Where(x => (productId == 0 || x.ProductId == productId)
&& (productCategory == 0 || x.ProductCategory == productCategory))
.ToList();