繁体   English   中英

Linq if-elseif-else在asp.net中使用linq查询

[英]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查询的更多信息

http://msdn.microsoft.com/en-us/library/gg509017.aspx

您可以继续使用已有的内容。

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.

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