如何在if语句之外定义var的局部变量范围?

时间:2017-02-20 08:37:47

标签: c# linq

在我之前的代码中,我尝试了一下视图。我想我需要首先检查id是否为空或null然后将值设置为0但是我得到一个错误,说,访问本地变量是不允许的。但是如何在if语句中访问var的局部变量?

var Rs1;
if (id != null)
{
    Rs1 = _context.DwPropertyDetails.Select(x => new
    {
        Rs1Clm2 = totalTransAmount,
        Rs1Clm3 = x.Studio),
        Rs1Clm4 = x.OneBedroom),
        Rs1Clm5 = x.TwoBedroom),
        Rs1Clm6 = x.ThreeBedroom),
        Rs1Clm7 = x.Total),
    });
}
else
{
    Rs1 = _context.DwPropertyDetails.Select(x => new
    {
        Rs1Clm2 = 0,
        Rs1Clm3 = 0,
        Rs1Clm4 = 0,
        Rs1Clm5 = 0,
        Rs1Clm6 = 0,
        Rs1Clm7 = 0,
    });
}

3 个答案:

答案 0 :(得分:2)

var推断出类型。如果未指定值,则无法推断值的类型。

您必须创建一个类或结构并将字段放在那里。然后使用创建的类的类型。

答案 1 :(得分:1)

如果你真的想使用var:

 var Rs1 = id != null ?
             _context.DwPropertyDetails.Select(x => new
                {
                    Rs1Clm2 = totalTransAmount,
                    Rs1Clm3 = x.Studio,
                    Rs1Clm4 = x.OneBedroom,
                    Rs1Clm5 = x.TwoBedroom,
                    Rs1Clm6 = x.ThreeBedroom,
                    Rs1Clm7 = x.Total,
                })
           : _context.DwPropertyDetails.Select(x => new
                {
                    Rs1Clm2 = 0,
                    Rs1Clm3 = 0,
                    Rs1Clm4 = 0,
                    Rs1Clm5 = 0,
                    Rs1Clm6 = 0,
                    Rs1Clm7 = 0,
                 });

答案 2 :(得分:-1)

为什么不使用object代替var

首先需要隐式输入

var。但是,既然你要分配一个没有类型的对象,那么也可以使用'object'。

E.g。 object Rs1;