CSharp - 使用三元运算符检查空空引用是否与空引用相同

  显示原文与译文双语对照的内容
0 0

尝试使用三元运算符检查值是否为 null,并返回一个表达式或者另一个表达式。 当将它合并到LINQ表达式时,我遇到的是LINQ表达式的事务sql转换尝试执行"列= 空"而不是"列为空"。 我有理由相信这是因为我正在执行以下操作:


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

因为它将下列语句转换为事务sql中的空值:


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);

时间: 原作者:

0 0

我从未尝试在linq中使用三元运算符,尽管你可以将它的编写为:


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

原作者:
0 0

试试这个


(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);

原作者:
0 0

你为什么不


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

改为改为?

原作者:
...