我在使用 LINQ 查询时遇到问题 -
Dim otherRecords As List(Of Objects) = listOf.Where(Function(x) x.ID_NUM = newID _
And (x.Codes.Contains(ddlPrimaryCode.SelectedItem.Text.Trim) And Not x.Codes = Nothing)).ToList()
Run Code Online (Sandbox Code Playgroud)
错误'System.NullReferenceException' 类型的异常发生在 CI.dll 中,但未在用户代码中处理
附加信息:未将对象引用设置为对象的实例。
问题是listOf包含x.Codes.Contains的值“Nothing”。
在我有之前
Dim otherRecords As List(Of Objects) = listOf.Where(Function(x) x.ID_NUM = newID _
And (x.Codes.Contains(ddlPrimaryCode.SelectedItem.Text.Trim)).ToList()
Run Code Online (Sandbox Code Playgroud)
它正在崩溃。
我只需要能够返回具有匹配 ID_NUM 和代码的记录。
您需要检查它是否是Nothing第一个并使用AndAlso关键字来阻止它评估后一个语句。 AndAlso是短路。有关这意味着什么的更多信息,请参阅此链接。
此外,在检查对象是否为空时,您应该使用IsorIsNot运算符而不是=。来自这篇 MSDN 文章:
检查引用(或可为空值类型)变量是否为空时,不要使用 = Nothing 或 <> Nothing。始终使用 Is Nothing 或 IsNot Nothing。
这应该工作
Dim otherRecords As List(Of Objects) = listOf.Where(Function(x) _
(x.ID_NUM = newID) AndAlso _
(x.Codes IsNot Nothing) AndAlso _
(x.Codes.Contains(ddlPrimaryCode.SelectedItem.Text.Trim()))).ToList()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18285 次 |
| 最近记录: |