Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用三元运算符检查null-null引用是否与null不相同_C#_Linq_Tsql_Asp.net Mvc 4 - Fatal编程技术网

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

C# 使用三元运算符检查null-null引用是否与null不相同,c#,linq,tsql,asp.net-mvc-4,C#,Linq,Tsql,Asp.net Mvc 4,我试图使用三元运算符检查值是否为null,并返回一个表达式或另一个表达式。在将其合并到LINQ表达式中时,我所经历的是LINQ表达式的Transact-SQL转换尝试执行“column=null”而不是“column is null”。我有理由相信这是因为我在做以下事情: mappedColumnName == (myVar == null ? null : myOtherVar) 因为它将以下内容转换为Transact-SQL中的columnName为NULL: mappedColumnNa

我试图使用三元运算符检查值是否为null,并返回一个表达式或另一个表达式。在将其合并到LINQ表达式中时,我所经历的是LINQ表达式的Transact-SQL转换尝试执行“column=null”而不是“column is null”。我有理由相信这是因为我在做以下事情:

mappedColumnName == (myVar == null ? null : myOtherVar)
因为它将以下内容转换为Transact-SQL中的columnName为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);

我从未尝试在linq中使用三元运算符,尽管您可以将其写成:

(
    (myVar == null && mappedColumnName == null      ) ||
    (myVar != null && mappedColumnNmae == myOtherVar)
)

我从未尝试在linq中使用三元运算符,尽管您可以将其写成:

(
    (myVar == null && mappedColumnName == null      ) ||
    (myVar != null && mappedColumnNmae == myOtherVar)
)
试试这个

(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);
试试这个

(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)
相反?

为什么不使用

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

相反?

您可以分享一下您的LINQ表达吗?当然可以。我现在已经添加了。请检查:[[1]:活力:我不确定这是否有效。我想检查ParentMenuCode是否为null,只有当ActiveSubMenu为null时,我想检查ParentMenuCode是否等于ActiveMenu。你能分享你的LINQ表达式吗?当然。我现在添加了它。检查:[[1]:Vitality:我不确定这是否有效。我想检查ParentMenuCode是否为null,只有当ActiveSubMenu为null时,我想检查ParentMenuCode是否等于ActiveMenu。相同的结果。三元表达式的Transact-SQL转换是标量方法,Transact-SQL基本上尝试执行columnName=null,这将ays失败。结果相同。三元表达式的Transact-SQL转换是一个标量方法,Transact-SQL基本上尝试执行columnName=null,这将始终失败。谢谢Jamie!这是可行的,解决方法也在Thank you Jamie中引用!这是可行的,解决方法也在