tengo THS función para consultar un conjunto de registros de la BD:Adición de un dónde/cláusula ORDER BY en IQueryable
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
}
);
}
deseo añadir una causa adicional, como este
var entries = GetPointTransaction(1);
return entries.OrderbyDescending.Where(x => x.When >= start && w.When <= end).
(x => x.When);
Sin embargo, parece que necesito crear una nueva consulta a partir de la existente para que esto funcione. Sin embargo, parece que tengo este trabajo antes sin crear una nueva consulta, en el fragmento de código antes:
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));
}
¿El código de alguna manera no necesita una nueva consulta que se creará para el objeto de origen IQueryable? ¿Se creó un objeto temporal?
Editar
Es extraño, pero para conseguir que funcione tengo que hacer lo siguiente:
IQueryable<ActivityLogEntry> log = activityRepo.GetPointTransaction(userID).
Where(x => x.PointsEarned == 50);
return log.ToList();
El siguiente no funcionará:
var log = = activityRepo.GetPointTransaction(userID);
log.Where(x => x.PointsEarned == 50);
return log.ToList();
No hay mensaje de error, solo que la cláusula where parece ignorada (también devuelve todos los datos que PointsEarned no es 50)
me las arreglé para conseguir que funcione, pero no pude usar var para almacenar el objeto IQueryable. He actualizado el código en mi pregunta. ¡Gracias! – Extrakun
@Extrakun, no puedo probar tu código actual, pero ¿cuál es el mensaje de error? en compilación o en tiempo de ejecución? o que pasa? –
No hay ningún mensaje de error, solo que se ignora la cláusula where y la cláusula orderby. – Extrakun