LINQ to SQL 和空字符串,我如何使用包含?

LINQ to SQL and Null strings, how do I use Contains?(LINQ to SQL 和空字符串,我如何使用包含?)
本文介绍了LINQ to SQL 和空字符串,我如何使用包含?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

这里是查询

from a in this._addresses
where a.Street.Contains(street) || a.StreetAdditional.Contains(streetAdditional)
select a).ToList<Address>()

如果 where 子句中的两个属性都有值,这可以正常工作,但例如,如果 a.StreetAdditional 为空(大多数情况下),我将收到空引用异常.

if both properties in the where clause have values this works fine, but if for example, a.StreetAdditional is null (Most of the times), I will get a null reference exception.

有办法解决这个问题吗?

Is there a work around this?

谢谢,

推荐答案

最明显的一个:

from a in this._addresses
where (a.Street != null && a.Street.Contains(street)) || (a.StreetAdditional != null && a.StreetAdditional.Contains(streetAdditional))
select a).ToList<Address>()

或者,您可以为 Contains 编写一个扩展方法,该方法接受空参数而不会出错.有人可能会说,有这样的方法不是很好,因为它看起来像一个普通的方法调用,但允许有空值(从而搁置正常的空检查实践).

Alternatively you could write an extension method for Contains that accepts a null argument without error. Some might say that it is not so pretty to have such a method, because it looks like a normal method call, but is allowed for null values (thereby setting aside normal null-checking practices).

这篇关于LINQ to SQL 和空字符串,我如何使用包含?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Is Unpivot (Not Pivot) functionality available in Linq to SQL? How?(Linq to SQL 中是否提供 Unpivot(非 Pivot)功能?如何?)
How to know if a field is numeric in Linq To SQL(如何在 Linq To SQL 中知道字段是否为数字)
Linq2SQl eager load with multiple DataLoadOptions(具有多个 DataLoadOptions 的 Linq2SQl 急切加载)
Extract sql query from LINQ expressions(从 LINQ 表达式中提取 sql 查询)
LINQ Where in collection clause(LINQ Where in collection 子句)
Orderby() not ordering numbers correctly c#(Orderby() 没有正确排序数字 c#)