martes, 21 de junio de 2011

concat y orderby linq

En este caso se están concatenando 2 listas en una tercera lista y ordenando por el campo RazonSocial

public IList GetEstacionesByIdZonaGeografica(string idZonaGeografica)
        {
            BpCrud<Estaciones> pbCrudEstaciones = new BpCrud<Estaciones>();
            BpCrud<ZonaGeograficaEstaciones> bpCrudZonaGeograficaEstaciones = new BpCrud<ZonaGeograficaEstaciones>();
            IList<Estaciones> listaEstaciones;
            IList<ZonaGeograficaEstaciones> listaZonaGeograficaEstaciones;

            listaEstaciones = pbCrudEstaciones.BM.List();
            listaZonaGeograficaEstaciones = bpCrudZonaGeograficaEstaciones.BM.List();

            //concatena las dos listas
            var estacionInfo =
            (
                //estaciones no asociadas a ninguna zona geografica
                from le in listaEstaciones
                where le.ZonaGeograficaEstacionesList.Count == 0
                select new
                {
                    IdZonaGeografica = "0",
                    RazonSocial = le.Razonsocial,
                    Acceso = 0,
                    ZonaGeografica = "sin zona asociada",
                    Pbl = le.Pbl,
                    AddUser = 0,
                    AddDate = (DateTime?) DateTime.MinValue
                }
            )
           .Concat
           (
               //estaciones asociadas a la zona geografica
               from lzge in listaZonaGeograficaEstaciones
               where lzge.ZonaGeografica.Zona == idZonaGeografica
               select new
               {
                   IdZonaGeografica = lzge.ZonaGeografica.Zona,
                   RazonSocial = lzge.Estaciones.Razonsocial,
                   Acceso = 1,
                   ZonaGeografica = lzge.ZonaGeografica.Descripcion,
                   Pbl = lzge.Estaciones.Pbl,
                   AddUser = lzge.Adduser,
                   AddDate = lzge.Adddate
               }
           ).OrderBy(q => q.RazonSocial);
           return estacionInfo.ToList();
        }

No hay comentarios:

Publicar un comentario