繁体   English   中英

在LINQ中编写Case语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM