Paging   zodpovězená otázka

C#

Dobry den,

potreboval by som pomoc s doplnenim paging do ASP.NET MVC 5, pouzivam Repository, Unit Of Work a Sercice z projectu

genericunitofworkandrepositories.codeplex.com

Funkcionalita v projekte doplnena je len neviem ju pouzivat.

internal IQueryable<TEntity> Select(
            Expression<Func<TEntity, bool>> filter = null,
            Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
            List<Expression<Func<TEntity, object>>> includes = null,
            int? page = null,
            int? pageSize = null)
        {
            IQueryable<TEntity> query = _dbSet;

            if (includes != null)
            {
                query = includes.Aggregate(query, (current, include) => current.Include(include));
            }
            if (orderBy != null)
            {
                query = orderBy(query);
            }
            if (filter != null)
            {
                query = query.AsExpandable().Where(filter);
            }
            if (page != null && pageSize != null)
            {
                query = query.Skip((page.Value - 1) * pageSize.Value).Take(pageSize.Value);
            }
            return query;
        }

viete mi poradit?

Dakujem

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Při volání metody Select musíte poskytnout poslední dva parametry (page znamená stránka a pageSize potom velikost stránky). Protože jsou všechny parametry nepovinné, musíte buď explicitně uvést všechny předchozí a nebo použít tzv. "named parameters"

Select(page: 1, pageSize: 10);

Tyhle dva argumenty se na výsledný dotaz aplikují v následujícím bloku kódu

if (page != null && pageSize != null)
{
    query = query.Skip((page.Value - 1) * pageSize.Value).Take(pageSize.Value);
}

metoda Skip nejdříve určí, kolik prvnků se přeskočí (pro moje volání to bude 0, protože žádám první stránku) a metoda Take určí, kolik prvků se vrátí (v mém případě 10).

Dává Vám to smysl?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

dakujem za odpoved, ale bolo to v chybajucom using System.Linq a zapis ma vyzerat takto....mozno to niekomu pomoze.

var list = _unitOfWork.Repository<Customer>()
				.Query(q=>q.ContactName!=null)
				.OrderBy(e => e
					.OrderBy(x => x.City)
					.ThenBy(d => d.Address))					
				.SelectPage(pageIndex, _pageSize, out totalCount);
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vždyť tam tu metodu Select nikde nepoužíváte a ta SelectPage má úplně jinou signaturu. Zdá se mi, že ty dva kousky kódu spolu ale vůbec nesouvisí. A s prominutím, nechat se rozhodit chybějícím usingem je teda docela hloupé, když Vás na to kompilátor upozorňuje.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback