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

时间:2014-01-01 12:51:11

标签: c# asp.net linq

在我的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"

4 个答案:

答案 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查询的更多信息

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

答案 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)