C# 用LINQ编写案例陈述
我是LINQ新手,我需要用CASE语句编写LINQ语句。我正在尝试将以下查询转换为linq。这里1和0是布尔值。我怎样才能做到这一点C# 用LINQ编写案例陈述,c#,linq,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" 请改为: Options
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"
请改为:
Options = table.Options == 1 ? "Yes" : "No";
您需要对该表进行寻址: 我会尝试:
Options = db.table.ToList().Select(X => X.Options == 1 ? "Yes" : "No";
有几件事你做错了-第一,三元运算符的语法是
condition ? resultIfTrue : resultIfFalse
其次,需要使用相等运算符(=
)进行比较,而不是赋值(=
)运算符
因此,table.Options=1?“是”:table.Options=0?“否”
应替换为
table.Options == 1 ? "Yes" : "No"
根据您实际的LINQ提供程序,可能会有一个帮助程序允许您构建类似SQL的case
表达式(条件类型和choice-y类型),但如果不确切知道您在使用什么,这是不可能的。如果没有助手,您将不得不使用三元运算符(这对于读取多个条件来说有点疯狂,但哦,好吧…)
例如,我的LINQ提供程序使用以下语法:
Case(table.Options).When(1, "Yes").Else("No").End()
或
但是,唯一的标准方法是三元运算符。查看特定LINQ提供程序的文档,看看它是否支持类似SQL的
case
表达式,以及如何支持这些表达式。“但现在正在工作”,这样就没有问题了?如果您的意思是而不是,那么它现在以什么方式工作,您会得到异常吗?如果是,什么样的异常?当然是,tables.ToList().Select(x=>x.Options==1?“是”:“否”)
Select CASE[db].[table]
在SQL中无效,因为[db].[table]
是一个表而不是一个列。=
是,您可能正在寻找更好的=
来显示表结构/数据?正如我前面所说的,我正在检查bool值,这里我得到的错误常量值1无法转换为boolThat,因为您有table.Options=1。如我所说,更改为double=,如“table.Options==1”@chrisl08将该配置添加到您的答案正文中。不能使用==因为运算符==不能应用于bool和intThen table类型的oprands。Options是一个布尔字段。Try:Options=table.Options?“是”:“否”;
Case().When(table.Options == 1, "Yes").Else("No").End()