c# - Linq Where 表达式中的空检查 String.ToLower

标签 c# linq null

我有这个方法

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/

相关文章:

c# - 什么是最佳选择,Windows 窗体或 C# 中的 WPF 开发?

java - 将 A 类引用传递给 B 类,并将 B 类引用传递给 A 类 Java

mysql - 使用 JOIN ON 处理 sql SELECTS 中的 null

java - Java中的C#BigInteger等效项

c# - 可序列化类和名称重构

c# - .Net CORE Web API 无缓存但仍然发生

c# - 如何使用 LINQ 在 XML 中按名称获取多个元素

c# - 'null' lambda 表达式是否有 C# 语法?例如,在没有 lambda 表达式的情况下调用 OrderBy(x => x)?

c# - 元素出现次数最多的列表

Postgresql NOT NULL AND <> '' 与 NOT NULL OR <> ''