嗨,
我用了很多关键字等于比较变量和其他的东西。
但
wines = wines.Where(d => d.Region.Equals(paramRegion)).ToList();
在运行时返回一个错误时,在数据区域为NULL
我不得不使用代码
wines = wines.Where(d => d.Region == paramRegion).ToList();
摆脱错误的。
任何想法为什么会引发错误?
谢谢。
嗨,
我用了很多关键字等于比较变量和其他的东西。
但
wines = wines.Where(d => d.Region.Equals(paramRegion)).ToList();
在运行时返回一个错误时,在数据区域为NULL
我不得不使用代码
wines = wines.Where(d => d.Region == paramRegion).ToList();
摆脱错误的。
任何想法为什么会引发错误?
谢谢。
您无法使用空对象引用调用实例方法。在调用实例方法之前,应该检查Region是否为空。
wines = wines.Where(d => d.Region != null && d.Region.Equals(paramRegion)).ToList();
的d.Region == paramRegion
是(最有可能)扩大到object.Equals(d.Region, paramRegion)
和静态方法并检查参数是否为空或不调用equals()方法之前。
如果您知道paramRegion
不能为空,您也可以按不同顺序编写条件。
Debug.Assert(paramRegion != null);
wines = wines.Where(d => paramRegion.Equals(d.Region)).ToList();
基本上如果
d.Region == null
那么任何方法调用,这里是的equals(...)上,将引发异常,因为它未初始化。
使用可以使用:
paramRegion.Equals(d.Region)
`Equals`在这种情况下是不是一个关键字 - 它仅仅是一个方法。 **有一个LINQ上下文的`equals`关键字,但只有在执行`join'时。 – 2011-01-29 14:53:23
这个问题已经被应答之前: http://stackoverflow.com/questions/2273600/lambda-expression-vs-equals – Victor 2011-01-29 14:53:38