【发布时间】:2019-10-17 13:49:38
【问题描述】:
Entity Framework 6 中如何对这个动态查询进行分页处理?
BillDetailLogsDto是自定义结果DTO不是数据库实体,如何sqlquery包含导航属性和不使用SqlParameter无法传递参数如何实现sqlquery使用.Where.OrderBy扩展
using (ProjectDbContext context = new ProjectDbContext())
{
var query = context.Database.SqlQuery<BillDetailLogsDto>("SELECT *, SUM(Amount) OVER (ORDER BY Id) AS QSAmount FROM BillDetailLogs").AsQueryable();
var result = query.Select(t => new
{
CustomerName = t.Customer.Name,
t.CustomerId,
t.Type,
t.SortId,
t.Amount,
QAmount=t.QSAmount,
t.ObjDate,
t.OpRemark,
t.Remark,
t.SendOrderId,
CreatedUserName = t.CreatedUser.RealName,
t.CreatedDate,
}).OrderByDescending(t => t.SortId);
return Json(result, JsonRequestBehavior.AllowGet);
}
【问题讨论】:
-
ToPagedList 需要 pageNumber 和 currentPage 作为参数:
public static IPagedList<T> ToPagedList<T>(this IQueryable<T> superset, int pageNumber, int pageSize);对于导航属性,您可能需要使用Include方法,例如billDetailLogsDto.Include(x => x.Customer).Include("MoreStuff").Where(...) -
@beiduoan 你搞定了吗?
标签: c# .net entity-framework-6