У меня есть ths для запроса набора записей из БД:
public IQueryable<PointTransactionViewModel> GetPointTransactions(int UserID)
{
return
(
from PointTransaction p in entities.PointTransaction
join ActivityLog a in entities.ActivityLog
on p.TransactionID equals a.TransactionID
where p.UserID == UserID
select new PointTransactionViewModel
{
ID = p.TransactionID,
Balance = p.Balance,
Points = p.Amount,
RelatedActivityID = a.ID,
When = p.When,
Sender = p.SenderUserInfo.CompleteName
}
);
}
Я хочу добавить дополнительную причину, например эту
var entries = GetPointTransaction(1);
return entries.OrderbyDescending.Where( x => x.When >= start && w.When <= end).
( x => x.When);
Однако мне кажется, что мне нужно создать новый запрос из существующего, чтобы это работало. Мне казалось, что эта работа выполняется раньше, без создания нового запроса, во фрагменте кода перед:
public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize)
{
PageIndex = pageIndex;
PageSize = pageSize;
TotalCount = source.Count();
TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);
this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize));
}
Не требует ли приведенный выше код каким-либо образом новый запрос для создания исходного объекта IQueryable? Был ли создан временный объект?
Edit
Это странно, но чтобы заставить его работать, я должен сделать следующее:
IQueryable<ActivityLogEntry> log = activityRepo.GetPointTransaction(userID).
Where(x => x.PointsEarned == 50);
return log.ToList();
Следующее не будет работать:
var log = = activityRepo.GetPointTransaction(userID);
log.Where( x => x.PointsEarned == 50);
return log.ToList();
Нет сообщения об ошибке, просто Предложение where кажется проигнорированным (оно также возвращает все данные, у которых PointsEarned не равно 50)