コード例 #1
0
        public ListaPaginada <TProyeccion> Listar <TEntidad, TKey, TProyeccion>(Expression <Func <TProyeccion, TKey> > funcProyeccion, Expression <Func <TEntidad, TKey> > funcEntidad, Paginacion paginacion, Expression <Func <TEntidad, bool> > filtroEntidad = null, Expression <Func <TProyeccion, bool> > filtroProyeccion = null)
            where TEntidad : class
            where TProyeccion : class
        {
            IQueryable <TEntidad>    entidades    = Set <TEntidad>();
            IQueryable <TProyeccion> proyecciones = Set <TProyeccion>();

            if (filtroEntidad != null)
            {
                entidades = entidades.Where(filtroEntidad);
            }
            proyecciones = entidades.Join(proyecciones, funcEntidad, funcProyeccion, (x, y) => y);

            if (filtroProyeccion != null)
            {
                proyecciones = proyecciones.Where(filtroProyeccion);
            }

            int itemsTotales = proyecciones.Count();

            if (paginacion.OrdenarPor != null)
            {
                var selectorOrden = Expresiones.Propiedad <TProyeccion>(paginacion.OrdenarPor);
                proyecciones = paginacion.DireccionOrden == DirOrden.Asc
                                 ? proyecciones.OrderBy(selectorOrden)
                                 : proyecciones.OrderByDescending(selectorOrden);
            }


            proyecciones = proyecciones.Skip((paginacion.Pagina - 1) * paginacion.ItemsPorPagina).Take(paginacion.ItemsPorPagina);

            return(new ListaPaginada <TProyeccion>(proyecciones.ToList(), paginacion.Pagina, paginacion.ItemsPorPagina, itemsTotales));
        }
コード例 #2
0
        private ListaPaginada <TDto> ObtenerListaPaginada <TEntidad, TDto>(Paginacion paginacion, IQueryable <TEntidad> lista)
        {
            if (paginacion.OrdenarPor != null && lista != null)
            {
                var selectorOrden = Expresiones.Propiedad <TEntidad>(paginacion.OrdenarPor);
                lista = paginacion.DireccionOrden == DirOrden.Asc
                                      ? lista.OrderBy(selectorOrden)
                                      : lista.OrderByDescending(selectorOrden);
            }
            var itemsTotales = 0;

            if (lista != null)
            {
                itemsTotales = lista.Count();
                lista        =
                    lista.Skip((paginacion.Pagina - 1) * paginacion.ItemsPorPagina).Take(paginacion.ItemsPorPagina);
            }
            var listaPaginada = new ListaPaginada <TEntidad>(lista.ToList(), paginacion.Pagina,
                                                             paginacion.ItemsPorPagina, itemsTotales);

            return(conversor.ConvertirListaPaginada <TEntidad, TDto>(listaPaginada));
        }
コード例 #3
0
        public ListaPaginada <TProyeccion> Listar <TEntidad, TProyeccion>(Expression <Func <TEntidad, TProyeccion> > proyeccion, Expression <Func <TEntidad, bool> > filtro, Paginacion paginacion) where TEntidad : class
        {
            IQueryable <TEntidad> entidades = Set <TEntidad>();

            if (filtro != null)
            {
                entidades = entidades.Where(filtro);
            }
            var resultados   = entidades.Select(proyeccion);
            int itemsTotales = resultados.Count();

            if (paginacion.OrdenarPor != null)
            {
                var selectorOrden = Expresiones.Propiedad <TProyeccion>(paginacion.OrdenarPor);
                resultados = paginacion.DireccionOrden == DirOrden.Asc
                                 ? resultados.OrderBy(selectorOrden)
                                 : resultados.OrderByDescending(selectorOrden);
            }


            resultados = resultados.Skip((paginacion.Pagina - 1) * paginacion.ItemsPorPagina).Take(paginacion.ItemsPorPagina);

            return(new ListaPaginada <TProyeccion>(resultados.ToList(), paginacion.Pagina, paginacion.ItemsPorPagina, itemsTotales));
        }