声明后访问匿名类型变量

时间:2018-02-21 16:43:44

标签: asp.net .net asp.net-mvc

我有一个具有匿名类型的方法,之后我将参数添加到viewmodel。

public void ConvertirBono(List<Bono> ParamBonos,List<Empleado> ParamEmpleado)
{
    Bonos = new List<BonoVM>();

    var bonos2 = ParamBonos.Where(x => x.mdEstatusRegistro)
        .Join(ParamEmpleado, x => x.EmpleadoID, y => y.ID, (x, y) => new
    {
        empleadoCompleto = y.nCodigoEmpleado.ToString() + y.vNombreEmpleado,
    }).ToList();
    foreach (var p in ParamBonos)
    {
        Bonos.Add(new BonoVM()
        {
            EmpleadoId = p.EmpleadoID,
            vEmpleado = empleadoCompleto,
            nBono1 = p.nBono1,
            nBono2 = p.nBono2
        });
    }
}

我想要做的是在添加到ViewModel(foreach子句)时插入匿名类型empleadoCompleto,但它总是为空。我尝试在外面声明该变量,但它仍然是空的。

public void ConvertirBono(List<Bono> ParamBonos,List<Empleado> ParamEmpleado)
{
    Bonos = new List<BonoVM>();
    string empleadoCompleto = null;

    var bonos2 = ParamBonos.Where(x => x.mdEstatusRegistro)
        .Join(ParamEmpleado, x => x.EmpleadoID, y => y.ID, (x, y) => new
    {
        empleadoCompleto = y.nCodigoEmpleado.ToString() + y.vNombreEmpleado,
    }).ToList();
    foreach (var p in ParamBonos)
    {
        Bonos.Add(new BonoVM()
        {
            EmpleadoId = p.EmpleadoID,
            vEmpleado = empleadoCompleto,
            nBono1 = p.nBono1,
            nBono2 = p.nBono2
        });
    }
} 

我做错了什么?

1 个答案:

答案 0 :(得分:0)

从您的代码中,看起来您正在尝试将它们合并在一起并创建一个视图模型列表。这里根本不需要创建匿名类型,您可以使用一行代码完成所有操作。这可能不太正确,因为你的问题不清楚,但至少应该让你走上正确的轨道。

public void ConvertirBono(List<Bono> ParamBonos,List<Empleado> ParamEmpleado)
{
    Bonos = ParamBonos.Where(x => x.mdEstatusRegistro)
        .Join(ParamEmpleado, 
            x => x.EmpleadoID, 
            y => y.ID, 
            (x, y) => new BonoVM
            {
                EmpleadoId = x.EmpleadoID,
                vEmpleado = y.nCodigoEmpleado.ToString() + y.vNombreEmpleado,
                nBono1 = x.nBono1,
                nBono2 = x.nBono2
            })
        .ToList();
}