我有这条线:
products = products.Where(p => p.Brand.Equals(s) ||
p.CatCodeNaam.Equals(s) ||
p.SubCategoryName.Equals(s)).ToList();
没问题,直到没有
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
来解决此问题,但我不希望这样。我正在寻找LINQ修复程序。一些测试数据可以解释我的问题:
我有一个带有关键字的数组,例如:
"car", "ford", "focus"
然后用
foreach
遍历关键字数组。而且由于我不知道关键字是品牌,类别还是子类别,所以我必须检查它是否是其中之一。但是数据集
products
中的某些对象的子类别中的值为空,从而导致第一行崩溃。 最佳答案
逆转条件:
s.Equals(p.SubCategoryName)
这样,
p.SubCategoryName
是否为null都不重要。关于c# - LINQ条件,仅当prop不为null时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40303453/