LINQ Выберите все и получите первые пять в пропустить дубль - PullRequest
0 голосов
/ 29 ноября 2011

Привет, мне нужно предложение сделать это в linq.нужно выбрать все строки, которые IsAvail = true и получить 5 первых строк.я сделал следующий запрос

from i in entity.Bills.OrderBy(e => e.From).Skip(CurrentPage).Take(intRecordsPerPage)
join c in entity.Cust on i.Id equals c.Id into c_join
from c in c_join.DefaultIfEmpty()
where i.IsAvail == true
select new { i, Id = c.Id };

Но когда IsAvail верен в 6-й записи, я не могу получить его на первой странице.Я могу получить только на второй странице, первая страница остается пустой.как я могу решить это

1 Ответ

0 голосов
/ 29 ноября 2011

Просто поместите Skip / Take в end запроса:

var allRecords = from i in entity.Bills
                 where i.IsAvail
                 orderby i.From
                 join c in entity.Cust on i.Id equals c.Id into c_join
                 from c in c_join.DefaultIfEmpty()
                 select new { i, Id = c.Id };

var page = allRecords.Skip(CurrentPage).Take(intRecordsPerPage);

(Я также поместил предложение where ранее и использовал выражения запроса для всего, просто для аккуратности.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...