I am working on an ASP.NET application and I am creating a LINQ query which will select paginated records from db. on user interface I have a listbox where user can select multiple choices. I want to know:
How can I increment Skip(), Take() parameters to view next results ?
How can I use "IN" key word so that if user selects multiple options from listbox, query can check all values ?
My query looks like this:
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();
The Take operator is used to return a given number of elements from an array and the Skip operator skips over a specified number of elements from an array. Skip, skips elements up to a specified position starting from the first element in a sequence.
The Any operator is used to check whether any element in the sequence or collection satisfy the given condition. If one or more element satisfies the given condition, then it will return true. If any element does not satisfy the given condition, then it will return false.
In LINQ, the concatenation operation contains only one operator that is known as Concat. It is used to append two same types of sequences or collections and return a new sequence or collection. It does not support query syntax in C# and VB.NET languages. It support method syntax in both C# and VB.NET languages.
Use the Skip() method in C# to skip number of elements in an array. Let's say the following is our array − int[] arr = { 10, 20, 30, 40, 50 }; To skip the first two elements, use the Skip() method and add argument as 2 − arr.Skip(2);
I think you are using Skip incorrectly. It should be before the Take.
Skip skips a number of records, so for your first page, pass in 0, else pass in the (page number - 1) * records per page.
I usually do something like this:
int Page = 1;
int RecordsPerPage = 10;
var q = yourQuery.Skip((Page - 1) * RecordsPerPage).Take(RecordsPerPage);
You need to turn paging on the GridView first. Then on PageIndexChanging
event:
var result = db.Where(...)
.Skip(e.NewPageIndex * grid.PageSize)
.Take(grid.PageSize)
.ToList(); // this is very important part too
To emulate IN
behavior:
var selection = list.SelectedItems.Select(i => i.Text).ToArray();
var result = db.Where(x => selection.Contains(x.Prop));
Try this:
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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With