gpt4 book ai didi

c# - 在没有空检查的情况下在 LinQ-to-entity 中的 where 子句中转换为 nullable

转载 作者:行者123 更新时间:2023-11-30 22:06:54 28 4
gpt4 key购买 nike

我知道我不能将值为“null”的可为 null 的 int 转换为非 nullable。

int? v = null;
int w = (int)v;

因此,我首先使用 null 检查来创建我的 where 子句。但是现在我看到即使没有它它似乎仍然有效,这怎么可能?

我知道我有很多LogEmneId在数据库中是空的。

foreach (var logMaaler in ctx.LogMaalers.Where(lm =>
// (lm.LogEmneId != null && logEmner.Contains((short)lm.LogEmneId))
logEmner.Contains((short)lm.LogEmneId)
))
{
}

LinQ-to-entity 语句是否被重写为为我处理 null 检查的 sql 查询?

最佳答案

Does the LinQ-to-entity statement get rewritten as a sql query that handles the null check for me?

有点。 Contains 被转换为 SQL 查询中的 IN 子句,它可以很好地处理 NULL 值。考虑以下查询:

SELECT *
FROM Table
WHERE Id IN (1,2,3,4,5,6,7)

当您在 Id 列中有包含 NULL 的行时,它将正常工作。而这正是这里正在发生的事情。

关于c# - 在没有空检查的情况下在 LinQ-to-entity 中的 where 子句中转换为 nullable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23288413/

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