[英]Writing Case statement in 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"
你做错了一些事情 - 一个是三元运算符的语法
condition ? resultIfTrue : resultIfFalse
其次,您需要使用等于运算符( ==
)进行比较,而不是赋值( =
)运算符。
因此, table.Options = 1 ? "Yes" : table.Options = 0 ? "No"
table.Options = 1 ? "Yes" : table.Options = 0 ? "No"
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
表达式以及如何使用。
你需要解决这个问题:我会尝试:
Options = db.table.ToList().Select(X => X.Options == 1 ? "Yes" : "No";
请改为:
Options = table.Options == 1 ? "Yes" : "No";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.