public void Fill(CargarDatosContext c, Int32 edificioId, Int32?anio)
        {
            baseFill(c);
            EdifiId = edificioId;
            Anio    = anio;

            if (!this.Anio.HasValue)
            {
                this.Anio = DateTime.Now.Year;
            }

            var anioMinimo = c.context.UnidadTiempo.Min(x => x.Anio);
            var anioActual = DateTime.Now.Year;

            for (int i = 0; i <= anioActual - anioMinimo; i++)
            {
                var value = (anioActual - i).ToString();
                LstAnios.Add(new SelectListItem {
                    Value = value, Text = value
                });
            }

            if (this.Anio.HasValue)
            {
                LstDatos = c.context.DatoEdificio.Where(X => X.EdificioId == EdifiId &&
                                                        X.UnidadTiempo.Anio == this.Anio && X.Dato == X.Nombre).OrderBy(X => X.UnidadTiempo.Orden).ToList();
            }
            else
            {
                LstDatos = c.context.DatoEdificio.Where(X => X.EdificioId == EdifiId && X.Dato == X.Nombre).OrderBy(X => X.UnidadTiempo.Orden).ToList();
            }

            MaxOrden = (LstDatos.Max(x => x.Orden) ?? 0) + 1;
        }
        public void fill(CargarDatosContext datacontext, String filtroTipo, String filtroNombre, String filtroDato, Int32?UnidadTiempoId, Int32 EdificioId, Int32?Anio)
        {
            baseFill(datacontext);
            this.EdificioId     = EdificioId;
            this.filtroDato     = filtroDato;
            this.filtroTipo     = filtroTipo;
            this.filtroNombre   = filtroNombre;
            this.UnidadTiempoId = UnidadTiempoId;
            this.Anio           = Anio;

            if (!this.Anio.HasValue)
            {
                this.Anio = DateTime.Now.Year;
            }

            var anioMinimo = datacontext.context.UnidadTiempo.Min(x => x.Anio);
            var anioActual = DateTime.Now.Year;

            for (int i = 0; i <= anioActual - anioMinimo; i++)
            {
                var value = (anioActual - i).ToString();
                LstAnios.Add(new SelectListItem {
                    Value = value, Text = value
                });
            }

            if (this.Anio.HasValue)
            {
                if (!String.IsNullOrEmpty(filtroTipo))
                {
                    if (filtroTipo.Contains("Crono") || filtroTipo.Contains("Equipo"))
                    {
                        LstDatos = datacontext.context.DatoEdificio.Where(X => X.EdificioId == EdificioId &&
                                                                          X.UnidadTiempo.Anio == this.Anio && X.Dato != X.Nombre).OrderBy(X => X.Orden).ToList();
                    }
                    else
                    {
                        LstDatos = datacontext.context.DatoEdificio.Where(X => X.EdificioId == EdificioId &&
                                                                          X.UnidadTiempo.Anio == this.Anio && X.Dato != X.Nombre).OrderByDescending(X => X.UnidadTiempo.Orden).ToList();
                    }
                }
                else
                {
                    LstDatos = datacontext.context.DatoEdificio.Where(X => X.EdificioId == EdificioId &&
                                                                      X.UnidadTiempo.Anio == this.Anio && X.Dato != X.Nombre).OrderByDescending(X => X.UnidadTiempo.Orden).ToList();
                }
            }
            else
            {
                if (!String.IsNullOrEmpty(filtroTipo))
                {
                    if (filtroTipo.Contains("Crono") || filtroTipo.Contains("Equipo"))
                    {
                        LstDatos = datacontext.context.DatoEdificio.Where(X => X.EdificioId == EdificioId && X.Dato != X.Nombre).OrderBy(X => X.Orden).ToList();
                    }
                    else
                    {
                        LstDatos = datacontext.context.DatoEdificio.Where(X => X.EdificioId == EdificioId && X.Dato != X.Nombre).OrderByDescending(X => X.UnidadTiempo.Orden).ToList();
                    }
                }
                else
                {
                    LstDatos = datacontext.context.DatoEdificio.Where(X => X.EdificioId == EdificioId && X.Dato != X.Nombre).OrderByDescending(X => X.UnidadTiempo.Orden).ToList();
                }
            }
            LstDatos.AddRange(datacontext.context.DatoEdificio.Where(X => X.EdificioId == EdificioId && X.Dato != X.Nombre && X.UnidadTiempoId == null).ToList());

            MaxOrden = (LstDatos.Max(x => x.Orden) ?? 0) + 1;
            if (!String.IsNullOrWhiteSpace(filtroTipo))
            {
                LstDatos = LstDatos.Where(X => X.Tipo.Contains(filtroTipo)).ToList();
            }
            if (!String.IsNullOrWhiteSpace(filtroNombre))
            {
                LstDatos = LstDatos.Where(X => X.Nombre.Contains(filtroNombre)).ToList();
            }
            if (!String.IsNullOrWhiteSpace(filtroDato))
            {
                LstDatos = LstDatos.Where(X => X.Dato.Contains(filtroDato)).ToList();
            }
            //if (UnidadTiempoId.HasValue) LstDatos = LstDatos.Where(X => (X.UnidadTiempoId ?? -1) == UnidadTiempoId.Value).ToList();
        }