如何通过subCategories过滤产品数据记录
按子类别过滤产品的解决方案
错误原因
subCategories是集合类型(对应JSON里的数组),不是单个对象,直接访问.Name会触发编译错误——集合本身没有Name属性,你需要检查集合内是否存在名称匹配的子类别项。
正确的扩展方法实现
使用Any()方法判断子类别集合中是否存在符合条件的元素,修改后的代码如下:
public static IQueryable<Product> FilterSubCategory(this IQueryable<Product> products, string name) { if (!string.IsNullOrEmpty(name)) { return products.Where(e => e.Category.subCategories.Any(sc => sc.Name == name)); } return products; }
代码说明
Any()方法会遍历subCategories集合,只要集合中有任意一个子类别名称与传入的name匹配,就保留该产品。- 改用
!string.IsNullOrEmpty(name)做判断,比单纯的name != null更严谨,能过滤掉空字符串的无效请求。
额外建议
可以把方法名改为FilterSubCategory,和原有的FilterCategory区分开,语义更明确,避免混淆。
内容的提问来源于stack exchange,提问作者Njabulo Mamba
相关产品推荐
相关产品推荐

