LINQ条件,其中只有当prop不为null时

时间:2016-10-28 10:45:57

标签: c# linq

我有这一行:

SubCategoryName

哪个没问题,直到没有var t = products.Where(p => p.Brand.Equals(s) || p.CatCodeNaam.Equals(s)) .Where(p => !string.IsNullOrWhiteSpace(p.SubCategoryName) && p.SubCategoryName.Equals(s));

所以我试过了:

SubCategoryName

但是如果没有isnull(SubCategoryName,'') as SubCategoryName,它应该忽略它并且不过滤所以没有空集合。

我知道我可以通过让数据库返回空字符串"car", "ford", "focus" 来修复它,但我不希望这样。我正在寻找一个LINQ修复程序。

一些测试数据可以解释我的问题:

我有一个包含以下关键字的数组:

foreach

我用products迭代关键字数组。

由于我不知道关键字是品牌,类别还是子类别,我必须检查它是否是其中之一。但是数据集replace('\n', '')中的对象在子类别中具有空值,导致第一行崩溃。

2 个答案:

答案 0 :(得分:3)

扭转条件:

s.Equals(p.SubCategoryName)

如果p.SubCategoryName为空,那么无关紧要。

答案 1 :(得分:1)

如果我没有正确理解,我很抱歉,但不会这样做:

products = products.Where(p => p.Brand.Equals(s) || 
                               p.CatCodeNaam.Equals(s) || 
                               p.SubCategoryName == null || 
                               p.SubCategoryName.Equals(s)).ToList();