在LINQ中编写Case语句

时间:2015-09-07 07:48:16

标签: c# linq

我是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"

3 个答案:

答案 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";