我正在尝试使用三元运算符来检查一个值是否为空并返回一个表达式或另一个。在将其合并到 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);