在我的asp.net应用程序中,我正在使用linq。我需要帮助if-elseif-else的语法是什么,单行使用linq。
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"
答案 0 :(得分:6)
我不明白你为什么这么做short.Parse("1")
。这将始终为1.如果您想在单行中使用多个if-else,请组合三元运算符:
STATUS = CD.STATUS == 1 ? "Complete" : CD.STATUS == 2 ? "Incomplete" : "Void"
如果要在Entity Framework(或其他支持IQueryable
的ORM)的上下文中使用它,它将转换为CASE WHEN
SQL语句。
答案 1 :(得分:0)
如果我没有错,我从你的问题中理解的是,你可能在询问where where子句。
如果是,那么您始终可以在查询中使用多个位置。
example :
Collection.Where(x => x.Age == 10)
.Where(x => x.Name == "Fido")
.Where(x => x.Fat == true)
有关LINQ查询的更多信息
答案 2 :(得分:0)
您可以继续使用已有的内容。
STATUS = CD.STATUS == 1 ? "Complete" : (CD.STATUS == 2 ? "Incomplete" : "InProgress")
答案 3 :(得分:0)
编写自己的方法并在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)