public async Task <ListViewModel <SocioViewModel> > GetSociAsync(SocioListInputModel model) { IQueryable <Socio> baseQuery = dbContext.Soci; baseQuery = (model.OrderBy, model.Ascending) switch { ("Nominativo", true) => baseQuery.OrderBy(socio => socio.Nominativo), ("Nominativo", false) => baseQuery.OrderByDescending(socio => socio.Nominativo), ("Tessera", true) => baseQuery.OrderBy(socio => socio.Tessera), ("Tessera", false) => baseQuery.OrderByDescending(socio => socio.Tessera), ("Id", true) => baseQuery.OrderBy(socio => socio.Id), ("Id", false) => baseQuery.OrderByDescending(socio => socio.Id), _ => baseQuery }; IQueryable <Socio> queryLinq = baseQuery .Where(socio => socio.Nominativo.Contains(model.Search)) .AsNoTracking(); List <SocioViewModel> socio = await queryLinq .Skip(model.Offset) .Take(model.Limit) .Select(socio => socio.ToSocioViewModel()) .ToListAsync(); int totalCount = await queryLinq.CountAsync(); ListViewModel <SocioViewModel> result = new() { Results = socio, TotalCount = totalCount }; return(result); }
public async Task <IActionResult> Index(SocioListInputModel input) { ViewData["Title"] = applicationPersister.GetTitoloApp(); ListViewModel <SocioViewModel> socio = await soci.GetSociAsync(input); SocioListViewModel viewModel = new() { Socio = socio, Input = input }; return(View(viewModel)); }