请给我提示我提到的返回类型:
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,我会收到错误消息。
答案 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#中是如何工作的。在if
和else
之外,x
(在您的原始代码中)实际上不存在。通过在x
之前{strong>之前声明if
变量,甚至在if
之外也存在该变量。