LINQ:搜索对象列表的多个字段,其中字段可以为空

LINQ: Search multiple fields of a List of objects where fields can be null

我正在尝试使用多字段搜索框来过滤对象列表。它获取文本,然后将搜索应用于列表。但是,地址 2 和 3 可能是空白的(在这种情况下, 列表的对象)取决于提交的地址。

我有以下表达式。

Properties.Where(x => x.Address1.ToLower().Contains(senderElement.Text) 
                  || x.Address2.ToLower().Contains(senderElement.Text) 
                  || x.Address3.ToLower().Contains(senderElement.Text))
          .ToList();

它目前抛出一个异常,因为它不能搜索空字段,这是正确的。

如何让它跳过或忽略空字段?可以用一个表达式完成吗?

尝试以下操作:

 Properties.Where(x => (x.Address1 != null && x.Address1.ToLower().Contains(senderElement.Text)) 
              || (x.Address2 != null && x.Address2.ToLower().Contains(senderElement.Text)) 
              || (x.Address3 != null && x.Address3.ToLower().Contains(senderElement.Text)))
      .ToList();

这也将检查空值

您可以像这样添加一些空检查

(x?.Address1?.ToLower()??"").Contains(senderElement?.Text??"")