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

C# 如何在IEnumarable中写入多个IF条件,c#,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();

请告诉我我提到的退货类型:

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;
}

这里,如果我提供return x,我将得到一个错误。

正如前面指出的,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;
}

我建议采取如下方法

将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中的作用域是如何工作的。在原始代码中的if和else之外,x实际上并不存在。通过在if之前声明x变量,它甚至存在于if之外。

x的外观未定义it@marc_s我的x没有犯错误db.EMS\u BUSINESSTYPE\u MASTER where Cust!=1 | | n.BUSINESSTYPE_ID==1选择n.ToList;?只需将if语句之外的x声明为IEnumerable或使用return from…我强烈怀疑这是您收到的错误消息-请发布您收到的具体完整的错误消息,谢谢!无需编写新列表,因为变量在所有分支中都是初始化的。我建议将IEnumerable保留为返回类型,而不是.ToList在x赋值上。是否可以将else简化为x=db.EMS\u BUSINESSTYPE\u MASTER.ToList@miWills我如何编写else条件在这个场景@cooo中你不需要else条件,因为我在if之前的代码与你当前的else相同。但是,如果您确实需要它用于其他场景,那么您将完全按照if-you以相同的方式分配给x。