gpt4 book ai didi

VB.Net Linq 到实体空值比较 - 'Is Nothing' 或 '= Nothing' ?

转载 作者:行者123 更新时间:2023-12-04 18:12:12 26 4
gpt4 key购买 nike

我们在 VB.Net 中有几个项目,使用 .Net Framework 4 和 Linq to Entities 来处理我们的许多 SQL 查询。迁移到 EF 对我们来说是一个新的转变(已经使用了大约 4-6 个月)并且得到了高层管理人员的支持,因为我们可以更快地编写代码。我们仍然使用大量存储过程,但我们甚至也通过 Linq to Entities 执行这些过程。

我希望能澄清一些困惑,但我找不到有意义的直接答案。我们有一些查询,我们想要特定字段具有 NULL 值的记录。这些是简单的选择查询,没有聚合或左连接等。微软建议查询看起来像这样 MSDN Link :

dim query = from a in MyContext.MyTables
Where a.MyField = Nothing
Select a

我有几个项目正是这样做的,而且效果很好,在 IDE 中没有警告。最近,另一个开发人员创建了一个新项目,当他像上面一样进行空检查时,我们都在 IDE 中收到了这个警告:

警告 1 此表达式将始终计算为 Nothing(由于来自 equals 运算符的 null 传播)。要检查值是否为空,请考虑使用“Is Nothing”。

比较项目,每个项目都启用了选项显式和选项严格。如果我们忽略警告,我们会在应用程序运行时获得我们正在寻找的确切记录集。如果我将 = 符号更改为 IS,警告就会消失。但是为什么这个警告出现在一个项目中而不是其他项目中呢?即使在 MSDN 上也有使用 equals 运算符的示例,这令人困惑。

最佳答案

生成的列应该是 Nullable(Of T)
因此,您可以像这样检查该字段是否具有值:

dim query = from a in MyContext.MyTables
Where Not a.MyField.HasValue
Select a

关于VB.Net Linq 到实体空值比较 - 'Is Nothing' 或 '= Nothing' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11419859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com