Mostrando entradas con la etiqueta Linq. Mostrar todas las entradas
Mostrando entradas con la etiqueta Linq. Mostrar todas las entradas

viernes, 3 de mayo de 2013

Group By y Sum con linq

var ListaInfoLineasAgrupadas = (from l in _Factura.Lineas
                                                   group l by l.CuentaCosto into grupo
                                                   select new
                                                   {
                                                       CuentaCosto = grupo.First().CuentaCosto,
                                                       Proyecto = grupo.First().Proyecto,
                                                       ValorNeto = grupo.Sum(g => g.ValorNeto),
                                                       PesoLinea = 0
                                                    }
                                                   ).ToList();

miércoles, 4 de enero de 2012

linq contar caracter

string parametros = "asd|123|oqiwe123d&$#$|"
long pipes = parametros.LongCount(p => p.Equals('|'));

el resultado de esto daria que pipes es igual a 3.

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();
        }

select distinct linq

Supongamos que tenemos el siguiente DTO:

    public class Receta
    {
        public virtual int SqIdreceta {get;set;}
        public virtual string Shortdescom {get;set;}
        public virtual Decimal? Porcion {get;set;}
        public virtual string Ord {get;set;}
        public virtual string Unidadventa {get;set;}
        /// <summary>
        /// Maestra
        /// </summary>
        public virtual Maestra Maestra {get;set;}
        /// <summary>
        /// Maestra nuevamente
        /// </summary>
        public virtual Maestra Maestraplucom { get; set; }
   }

supongamos que tenemos una tabla "Receta" que describe los productos que componen otro(por ejemplo 1/4 de pollo con papas fritas y bebida), si hacemos un select a esta tabla para desplegar las recetas en un combo para mostrar cuantas recetas tenemos, cada receta va a aparecer n veces (n es la cantidad de ingredientes que componen la receta) haremos un select distinct para obtener las recetas y mostraremos de nuevo el orderby



        public IList GetAllRecetaCombo()
        {
            IList<Receta> listaReceta = new List<Receta>();

            BpCrud<Receta> bpCrudReceta = new BpCrud<Receta>();//clase que va a la base de datos y que tiene sus métodos CRUD ya implementados

            listaReceta = bpCrudReceta.BM.List();//vienen las recetas repetidas

            var recetaInfo =
             (
                from rec in listaReceta
                orderby rec.Maestra.Shortdes// las ordenamos
                select new
                {
                    PLUReceta = rec.Maestra.Plu,
                    DescripcionReceta = rec.Maestra.Shortdes
                }
            ).Distinct().ToList();//filtramos
            return recetaInfo.ToList();
        }

orderby en linq

Supongamos que tenemos el siguiente DTO.

    public class Rol
    {
        public virtual int SqIdrol {get;set;}
        public virtual string NombreRol {get;set;}
        public virtual string Descripcion {get;set;}
        public virtual DateTime? Adddate {get;set;}
        public virtual int? Adduser {get;set;}
        public virtual DateTime? Moddate {get;set;}
        public virtual int? Moduser {get;set;}
        public virtual IList<Acceso> AccesoList {get;set;}
        public virtual IList<Usuario> UsuarioList {get;set;}
}

y queremos cargar un combo con la descripcion del rol y con el id del rol ordenado por la descripcion, seria de la siguiente forma:

         public IList GetAllRol(int idSistema)
        {
            IList<Rol> listaRol = null;
            BmRol bmRol = new BmRol();//clase que va a la base de datos y que tiene sus métodos CRUD ya implementados
            Rol rol = new Rol();
            rol.Sistema = new Sistema(idSistema);
            listaRol = bmRol.FindRol(rol);

            var rolInfo =
                (from roll in listaRol
                 orderby roll.Descripcion
                 select new                  
                 {
                  roll.Descripcion,
                  roll.SqIdrol
                 }
                );
            return rolInfo.ToList();
        }