c# - 使用三元运算符检查 null - null 引用是否与 null 不同

标签 c# linq t-sql asp.net-mvc-4

我正在尝试使用三元运算符来检查值是否为空并返回一个表达式或另一个。当将其合并到 LINQ 表达式中时,我遇到的情况是 LINQ 表达式的 Transact-SQL 翻译尝试执行“column = null”而不是“column IS NULL”。我有理由相信这是因为我正在执行以下操作:

mappedColumnName == (myVar == null ? null : myOtherVar)

因为它将以下内容转换为 Transact-SQL 中的 columnName IS NULL:

mappedColumnName == null

有人有这方面的经验吗?我非常想让它发挥作用。

整个 LINQ 表达式:

(from MenuItem in menuContext.Menus
   where MenuItem.IsSysAdmin == (ClientID == 1 ? true : false)
   && MenuItem.IsActive == true
   && MenuItem.ParentMenuCode == (ActiveSubMenu==null?null:ActiveMenu)
   && MenuItem.ClientID == (UseClientMenu ? ClientID : 0)
   && MenuItem.EmployeeID == (UseEmployeeMenu ? EmployeeID : 0)
   orderby MenuItem.SortOrder, MenuItem.MenuName
   select MenuItem);

最佳答案

你为什么不使用

mappedColumnName == (myVar == null ? DBNull.Value: myOtherVar)

相反?

关于c# - 使用三元运算符检查 null - null 引用是否与 null 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13700460/

相关文章:

c# - Microsoft.Phone.ni.dll 中的 UnauthorizedAccessException

c# - 嵌套的 Select MySQL 语句到 LINQ

sql-server - 创建临时表并同时存储执行命令的结果

sql-server - 查找 SQL Server 表子集中前一个值和后一个值之间的值

sql - 将 case 语句与 stuff 结合使用

c# - Linq 更新并合并两个结果集(来自数据表)

c# - 从云服务中的 Azure 文件访问挂载

C# 文本框删除问题

c# - 字符串比较的 DateTime.TryParseExact 方法

vb.net - 如何在 VB.Net 中创建一个可以从函数返回结果的 GroupBy?