日期:2014-05-20  浏览次数:20851 次

IQueryable<T>调用Count的时候超时
代码如下:

public PagedList(IQueryable<T> source, int pageIndex, int pageSize)
{
     int total = source.Count();
     this.TotalCount = total;
     this.TotalPages = total / pageSize;
     if (total % pageSize > 0)
           TotalPages++;
     this.PageSize = pageSize;
     this.PageIndex = pageIndex;
     this.AddRange(source.Skip(pageIndex * pageSize).Take(pageSize).ToList());
}

问题:
执行到source.Count()的时候超时,但通过跟踪,执行这个方法的时候的T-SQL,COPY出来大概如下:
SELECT COUNT....
在SQL Server Management Studio中执行是非常快的。
不明白,Count()方法,除了去调用执行这句SQL,到底干了啥?还有其他地方锁定了表?

求解,感谢任何建议。

------解决方案--------------------
你试试在这个函数内直接调用执行sql语句会不会超时
------解决方案--------------------
用sql profile看一下,当执行.count方法时,数据库端发生了什么
------解决方案--------------------
你的数据源是不是有问题。