我是LINQ的新手,我需要用CASE语句编写一个LINQ语句。我想将以下查询转换为linq。这里1和0是布尔值。我怎么能实现这个
Select CASE [db].[table] WHEN 1 THEN 'Yes' WHEN 0 THEN 'No' END AS Options from table
我尝试了以下但现在正在使用
Options = table.Options = 1 ? "Yes" : table.Options = 0 ? "No"
答案 0 :(得分:3)
你做错了一些事情 - 一个是三元运算符的语法
condition ? resultIfTrue : resultIfFalse
其次,您需要使用等于运算符(==
)进行比较,而不是使用赋值(=
)运算符。
因此,table.Options = 1 ? "Yes" : table.Options = 0 ? "No"
应替换为
table.Options == 1 ? "Yes" : "No"
根据您的实际LINQ提供程序,可能有一个帮助程序允许您构建类似SQL的case
表达式(条件和选择-Y类型),但这是不可能的不知道你正在使用什么。如果没有帮助者,你将不得不使用三元运算符(对于超过一个条件而言,读取有点疯狂,但是哦......)。
例如,我的LINQ提供程序使用以下语法:
Case(table.Options).When(1, "Yes").Else("No").End()
或
Case().When(table.Options == 1, "Yes").Else("No").End()
但同样,唯一的标准方法是三元运算符。查看特定LINQ提供程序的文档,了解它是否支持类似SQL的case
表达式以及如何使用。
答案 1 :(得分:1)
你需要解决这个问题: 我会尝试:
Options = db.table.ToList().Select(X => X.Options == 1 ? "Yes" : "No";
答案 2 :(得分:0)
请改为:
Options = table.Options == 1 ? "Yes" : "No";