Salta () e Porta () da Linq a Entità ()

Sto lavorando su un’applicazione ASP.NET e sto creando una query LINQ che selezionerà i record impaginati da db. sull’interfaccia utente Ho una lista in cui l’utente può selezionare più scelte. Voglio sapere:

La mia query è simile a questa:

var searchResults = context.data_vault.Where(d => d.STATE == lstStates.SelectedItem.Text).OrderBy(d= > d.dv_id).Take(10).Skip(2); GridView1.DataSource = searchResults; GridView1.DataBind(); 

Penso che stai usando Skip in modo errato. Dovrebbe essere prima del Take.

Salta ignora un numero di record, quindi per la tua prima pagina passa in 0, altrimenti passa nel (numero di pagina – 1) * record per pagina.

Di solito faccio qualcosa del genere:

 int Page = 1; int RecordsPerPage = 10; var q = yourQuery.Skip((Page - 1) * RecordsPerPage).Take(RecordsPerPage); 

È necessario prima triggersre il paging su GridView. Quindi nell’evento PageIndexChanging :

 var result = db.Where(...) .Skip(e.NewPageIndex * grid.PageSize) .Take(grid.PageSize) .ToList(); // this is very important part too 

Per emulare il comportamento IN :

 var selection = list.SelectedItems.Select(i => i.Text).ToArray(); var result = db.Where(x => selection.Contains(x.Prop)); 

Prova questo:

  int temp = (CurrentPageNumber - 1) * 10; var searchResults = context.data_vault.Where(d => d.STATE == lstStates.SelectedItem.Text).OrderBy(d= > d.dv_id).Skip(temp).Take(10);