[英]Linq if-elseif-else using linq query in asp.net
在我的asp.net应用程序中,我正在使用linq。 我需要帮助,在单行中使用linq的if-elseif-else的语法是什么。
genericReportList =
(from CD in list
select new GENERICREPORT
{
CITATIONNO = CD.CITATIONNO,
DATE = CD.DATE,
LOCATION = CD.LOCATION,
//STATUS = CD.STATUS,
PLATENO = Utilities.DecryptData(CD.PLATENO),
PSOURCE = CD.PSOURCE,
MAKE = CD.MAKE,
ID = Utilities.DecryptData(CD.ID),
NATIONALITY = CD.NATIONALITY,
SOURCE = CD.SOURCE,
NAME = Utilities.DecryptData(CD.NAME),
VIOLATION = CD.VIOLATION,
STATUS = CD.STATUS == short.Parse("1") ? "Complete" : "Incomplete"
}).ToList();
If STATUS = CD.STATUS == short.Parse("1") ? "Complete" : and 2 for "Incomplete" and 3 for "Void"
我不明白您为什么要做short.Parse("1")
。 它将始终为1。如果您希望在一个直线上使用多个if-else,请组合三元运算符:
STATUS = CD.STATUS == 1 ? "Complete" : CD.STATUS == 2 ? "Incomplete" : "Void"
如果要在Entity Framework(或具有IQueryable
支持的其他ORM)的上下文中使用它,它将转换为CASE WHEN
SQL语句。
如果我没记错,我从您的问题中了解到的是,您可能正在询问where子句。
如果是,那么您始终可以在查询中使用多个位置。
example :
Collection.Where(x => x.Age == 10)
.Where(x => x.Name == "Fido")
.Where(x => x.Fat == true)
有关LINQ查询的更多信息
您可以继续使用已有的内容。
STATUS = CD.STATUS == 1 ? "Complete" : (CD.STATUS == 2 ? "Incomplete" : "InProgress")
编写自己的方法并在LINQ查询中使用它没有任何问题。 它比长条件运算符要容易理解和可读得多。
考虑使用类似:
private String GetStatus(int value)
{
if (value == 1)
return "Complete";
if (value == 2)
return "Incomplete";
if (value == 3)
return "Void";
}
然后,您将这样称呼它:
STATUS = GetStatus(CD.STATUS)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.