问题描述
用两种方式调用同样的Linq查询,这是第一种:varLunBoList=fromxinnc.Articleswherex.PlateId==4&&x.isShow==trueorderbyx.ArticleIDdescendingorderbyx.isTopdescendingselectnewArticleListModel{ArticleID=x.ArticleID,ShortTitle=x.ShortTitle,Abstract=x.Abstract,ImagesUrl=x.ImagesUrl,NavigateUrl=x.NavigateUrl};ViewBag.LunBoList=LunBoList.Take(4).ToList();
这是第二种,调用其它方法查询ViewBag.TJList=GetArticleListModel(11,2);privateList<ArticleListModel>GetArticleListModel(intplateId,inttop){NewsContextnc=newNewsContext();varLunBoList=fromxinnc.Articleswherex.PlateId==plateId&&x.isShow==trueorderbyx.ArticleIDdescendingorderbyx.isTopdescendingselectnewArticleListModel{ArticleID=x.ArticleID,ShortTitle=x.ShortTitle,Abstract=x.Abstract,ImagesUrl=x.ImagesUrl,NavigateUrl=x.NavigateUrl};returnLunBoList.Take(top).ToList();}
生成的数据库语句第一种是这样的SELECTTOP(4)[Extent1].[ArticleID]AS[ArticleID],[Extent1].[ShortTitle]AS[ShortTitle],[Extent1].[Abstract]AS[Abstract],[Extent1].[ImagesUrl]AS[ImagesUrl],[Extent1].[NavigateUrl]AS[NavigateUrl]FROM[dbo].[Articles]AS[Extent1]WHERE(4=[Extent1].[PlateId])AND(1=[Extent1].[isShow])ORDERBY[Extent1].[isTop]DESC
第二种是这样的execsp_executesqlN'SELECTTOP(2)[Project1].[ArticleID]AS[ArticleID],[Project1].[ShortTitle]AS[ShortTitle],[Project1].[Abstract]AS[Abstract],[Project1].[ImagesUrl]AS[ImagesUrl],[Project1].[NavigateUrl]AS[NavigateUrl]FROM(SELECT[Extent1].[ArticleID]AS[ArticleID],[Extent1].[ShortTitle]AS[ShortTitle],[Extent1].[Abstract]AS[Abstract],[Extent1].[ImagesUrl]AS[ImagesUrl],[Extent1].[NavigateUrl]AS[NavigateUrl],[Extent1].[isTop]AS[isTop]FROM[dbo].[Articles]AS[Extent1]WHERE([Extent1].[PlateId]=@p__linq__0)AND(1=[Extent1].[isShow]))AS[Project1]ORDERBY[Project1].[isTop]DESC',N'@p__linq__0int',@p__linq__0=11
感觉执行效率差好多这是怎么回事?
解决方案
解决方案二:
正好发现orderby有问题
解决方案三:
没人?没人?没人?