在linq中使用equals关键字

时间:2011-01-29 14:22:03

标签: c# linq lambda equals-operator

  

可能重复:
  Lambda Expression: == vs. .Equals()

您好,

我使用了很多关键字Equals来比较变量和其他东西。

wines = wines.Where(d => d.Region.Equals(paramRegion)).ToList();

在数据Region为NULL时,在运行时返回错误

我不得不使用代码

wines = wines.Where(d => d.Region == paramRegion).ToList();

摆脱错误。

为什么会引起错误?

感谢。

3 个答案:

答案 0 :(得分:3)

您不能使用null对象引用调用实例方法。在调用其实例方法之前,应检查Region是否为null。

wines = wines.Where(d => d.Region != null && d.Region.Equals(paramRegion)).ToList();

d.Region == paramRegion(很可能)扩展为object.Equals(d.Region, paramRegion),静态方法在调用Equals()方法之前会检查参数是否为null。

如果您知道paramRegion不能为空,您也可以按不同顺序编写条件。

Debug.Assert(paramRegion != null);
wines = wines.Where(d => paramRegion.Equals(d.Region)).ToList();

答案 1 :(得分:3)

基本上是

d.Region == null

然后任何方法调用,这里是 Equals(...)就会引发异常,因为它没有被初始化。

答案 2 :(得分:0)

使用可以使用:

paramRegion.Equals(d.Region)