在 linq 中使用 equals 关键字

Fil*_*lip 5 c# linq lambda equals-operator

可能的重复:
Lambda 表达式:== 与 .Equals()

你好,

我经常使用关键字 Equals 来比较变量和其他东西。

wines = wines.Where(d => d.Region.Equals(paramRegion)).ToList();
Run Code Online (Sandbox Code Playgroud)

当数据区域为 NULL 时,在运行时返回错误

我不得不使用代码

wines = wines.Where(d => d.Region == paramRegion).ToList();
Run Code Online (Sandbox Code Playgroud)

摆脱错误。

任何想法为什么会引发错误?

谢谢。

mgr*_*ber 5

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

wines = wines.Where(d => d.Region != null && d.Region.Equals(paramRegion)).ToList();
Run Code Online (Sandbox Code Playgroud)

d.Region == paramRegion是(最有可能)扩大到object.Equals(d.Region, paramRegion)与静态方法做检查参数是否为空或不调用equals()方法之前。

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

Debug.Assert(paramRegion != null);
wines = wines.Where(d => paramRegion.Equals(d.Region)).ToList();
Run Code Online (Sandbox Code Playgroud)