1

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

我有以下表达。

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

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

我怎样才能让它跳过或忽略空字段?可以在一个表达式中完成吗?

4

2 回答 2

3

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

(x?.Address1?.ToLower()??"").Contains(senderElement?.Text??"") 
于 2017-02-22T12:38:30.393 回答
2

尝试以下操作:

 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();

这也将检查空值

于 2017-02-22T12:38:23.517 回答