C# 使用三元运算符检查null-null引用是否与null不相同
我试图使用三元运算符检查值是否为null,并返回一个表达式或另一个表达式。在将其合并到LINQ表达式中时,我所经历的是LINQ表达式的Transact-SQL转换尝试执行“column=null”而不是“column is 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
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中引用!这是可行的,解决方法也在