首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

LinQ的orderby有关问题

2013-10-12 
LinQ的orderby问题开发环境:EF4.1+MVC3问题:在controller中,使用orderby的时候iis进程特别吃内存,这是什么

LinQ的orderby问题
开发环境:EF4.1+MVC3
问题:在controller中,使用orderby的时候iis进程特别吃内存,这是什么原因,哪位大神能给解读一下,谢谢!
代码如下: sitInformationList = sitInformation.AsEnumerable().OrderByDescending(sri => sri.GetType().GetProperty(sidx).GetValue(sri, null))
                                         .Skip(rowNum * (page - 1)).Take(rowNum).ToList();
[解决办法]
不是 orderby 的问题,是你的 AsEnumerable()的问题。
当使用AsEnumerable()时,linq 的Provider已经改变,这时应该是linq to object,而非linq to ef.
后面的排序,分页都是在内存中,非数据库。
先从数据库把数据全部拿到内存里再进行排序分页,sitInformation的数据大的话,占内存。
[解决办法]
var p = Expression.Parameter(sri.GetType(), "p");
var body = Expression.MakeMemberAccess(sri.GetType().GetProperty(sidx), p);
var orderbylambda = Expression.Lambda(p, body);
sitInformationList = sitInformation.OrderByDescending(orderbylambda);

热点排行