我有这个方法
private IList<Order> FilterOrders(string filterText)
{
string filterTextLowerCase = filterText.ToLower();
var filtered = _orders.Where(order =>
order.OrderIdFullOrderNumber.ToLower().Contains(filterTextLowerCase) ||
order.Name.ToLower().Contains(filterTextLowerCase) ||
order.Status.ToLower().Contains(filterTextLowerCase) ||
order.TimeRemaining.ToLower().Contains(filterTextLowerCase) ||
order.Address.ToLower().Contains(filterTextLowerCase) ||
order.City.ToLower().Contains(filterTextLowerCase) ||
order.State.Abbrev.ToLower().Contains(filterTextLowerCase) ||
order.PostalCode.ToLower().Contains(filterTextLowerCase)).ToList();
return filtered;
}
如您所见,属性中可能存在空引用异常,检查此 Where 表达式中空值的最佳方法是什么?
最佳答案
如果您使用的是 C# 6,您可以在访问对象属性或方法之前添加一个 ?.
空检查运算符:order?.State?.ToLower()....
参见 this有关新空检查运算符的更多信息。
如果您使用的是较低版本,则必须向每个 where 子句添加额外的空检查:.Where(order => (order.State != null && order.State.ToLower()。 ...)
关于c# - Linq Where 表达式中的空检查 String.ToLower,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34212234/