如何在IEnumarable中写入多个IF条件

时间:2019-01-03 11:19:40

标签: c#

请给我提示我提到的返回类型:

public IEnumerable<EMS_BUSINESSTYPE_MASTER> CustomerType(int Cust)
{
    if (Cust == 1)
    {
        var x = (from n in db.EMS_BUSINESSTYPE_MASTER
                 where n.BUSINESSTYPE_ID == 1
                 select n).ToList();
    }
    else
    {
        var x = from n in db.EMS_BUSINESSTYPE_MASTER
                select n;
    }

    return x;
}

如果我提供退货x,我会收到错误消息。

2 个答案:

答案 0 :(得分:3)

如前所述,x的定义未达到return语句可以达到的水平。因此,我们刚刚将其移到了自己的定义中,并确保else块.ToList()是结果。希望这会有所帮助。

public List<EMS_BUSINESSTYPE_MASTER> CustomerType(int Cust)
{
    List<EMS_BUSINESSTYPE_MASTER> x = new List<EMS_BUSINESS_TYPE>();
    if (Cust == 1)
    {
        x = (from n in db.EMS_BUSINESSTYPE_MASTER
                where n.BUSINESSTYPE_ID == 1
                select n).ToList();
    }
    else
    {
        x = (from n in db.EMS_BUSINESSTYPE_MASTER
                select n).ToList();
    }

    return x;
}

答案 1 :(得分:3)

我建议采用以下方法。

x设置为其中一种情况,然后如果满足if条件,则使用该方案的特定结果(即业务类型1)重新分配。

public IEnumerable<EMS_BUSINESSTYPE_MASTER> CustomerType(int Cust)
{
    var x = db.EMS_BUSINESSTYPE_MASTER; // no need for the `select`

    if (Cust == 1)
    {
        x = x.Where(z => z.BUSINESSTYPE_ID == 1);
    }

    return x;
}

之所以有用,是因为范围界定在C#中是如何工作的。在ifelse之外,x(在您的原始代码中)实际上不存在。通过在x之前{strong>之前声明if变量,甚至在if之外也存在该变量。