我有一个EF4模型,其中有与任务实体(ChildTasks)具有一对多关系的产品实体。 我必须根据某些用户条件从数据库获取一些项目。 该项目有一个名为EstimatedProgress的自定义属性(不与任何列关联),在这里我必须存储有关项目的其他信息-每个子任务的计算加权平均进度。 问题是 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
public class PaginatedList<T> : List<T> {
public int PageIndex { get; private set; }
public int PageSize { get; private set; }
public int TotalCount { get; private set; }
public int TotalPages { get; private set; }
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));
}
public bool HasPreviousPage {
get {
return (PageIndex > 0);
}
}
public bool HasNextPage {
get {
return (PageIndex+1 < TotalPages);
}
}
}
是什么导致IQueryable延迟查询运行? 是因为AddRange接受IEnumerable吗? AddRange本身返回void。
是什么导致IQueryable延迟查询运行?
在内部, List<T>.AddRange
枚举IEnumerable
,这将导致查询执行。
如果要推迟执行该操作, 则必须重写AddRange
和大多数其他所有List<T>
成员以执行查询, 然后传递给基本实现。
我看不到推迟查询的好处。
我完全错过了Count
电话。 这将执行类似的查询(基本上是将原始查询包装在COUNT(*)
外部查询中),这也可能是一个问题。 如果查询非常复杂并且需要很长时间来执行计数,那么这也可能是性能问题的根源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.