Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#和LINQPad之间的Linq查询性能_C#_Performance_Linq_Entity Framework_Linqpad - Fatal编程技术网

C#和LINQPad之间的Linq查询性能

C#和LINQPad之间的Linq查询性能,c#,performance,linq,entity-framework,linqpad,C#,Performance,Linq,Entity Framework,Linqpad,在我的应用程序中,使用以下linq查询: var r = from uev in UtilisateurEpisodeVus group uev by uev.Episode.Saison.Serie into pgroup let count = pgroup.Count() orderby count descending select new SerieVu() { nombreDeVus = count, Serie = p

在我的应用程序中,使用以下linq查询:

var r = from uev in UtilisateurEpisodeVus
        group uev by uev.Episode.Saison.Serie into pgroup
        let count = pgroup.Count()
        orderby count descending
        select new SerieVu() { nombreDeVus = count, Serie = pgroup.Key };
return r.ToList();
在LINQPad中,使用与实体框架相同的连接使用大致相同的查询:

from uev in UtilisateurEpisodeVus
group uev by uev.Episode.Saison.Serie into pgroup
let count = pgroup.Count()
orderby count descending
select pgroup.Key
在我的申请中:

resultat.ToList()
大约需要45秒

在LINQPad中,需要191毫秒


有什么问题吗?

谢谢您的帮助,我已经找到了使用Entity Framework Profiler试用版的解决方案。。事实上,我是这样做的:

IEnumerable<UtilisateurEpisodeVu>   listUtilisateurEpisodeVu = Query(uev => uev.userepivu_date > dateIlYaSeptJours);

var resultat =
from uev in listUtilisateurEpisodeVu
group uev by uev.Episode.Saison.Serie into pgroup
let count = pgroup.Count()
orderby count descending
select new SerieVu() { nombreDeVus = count, Serie = pgroup.Key };

在我的linq查询中直接使用查询,性能非常好。。。我不明白为什么。如果有人有任何想法,我很高兴知道答案。再次感谢您的帮助我已经找到了使用Entity Framework Profiler试用版的解决方案。。事实上,我是这样做的:

IEnumerable<UtilisateurEpisodeVu>   listUtilisateurEpisodeVu = Query(uev => uev.userepivu_date > dateIlYaSeptJours);

var resultat =
from uev in listUtilisateurEpisodeVu
group uev by uev.Episode.Saison.Serie into pgroup
let count = pgroup.Count()
orderby count descending
select new SerieVu() { nombreDeVus = count, Serie = pgroup.Key };
在我的linq查询中直接使用查询,性能非常好。。。我不明白为什么。如果有人有任何想法,我很高兴知道答案。再次感谢你说的话

IEnumerable<UtilisateurEpisodeVu>   listUtilisateurEpisodeVu
from uev in listUtilisateurEpisodeVu
group uev
from uev in Query(uev => uev.userepivu_date > dateIlYaSeptJours)
group uev
您正在对一个
IQueryable
进行分组,该分组转换为对
System.Linq.Queryable.GroupBy
的调用,该调用被转换为sql并发送到数据库

通过更改变量的类型,可以获得相同的结果:

IQueryable<UtilisateurEpisodeVu>   listUtilisateurEpisodeVu
from uev in listUtilisateurEpisodeVu
group uev
IQueryable列表利用UREPISODEVU
来自列表中的uev利用率
组uev
当你说

IEnumerable<UtilisateurEpisodeVu>   listUtilisateurEpisodeVu
from uev in listUtilisateurEpisodeVu
group uev
from uev in Query(uev => uev.userepivu_date > dateIlYaSeptJours)
group uev
您正在对一个
IQueryable
进行分组,该分组转换为对
System.Linq.Queryable.GroupBy
的调用,该调用被转换为sql并发送到数据库

通过更改变量的类型,可以获得相同的结果:

IQueryable<UtilisateurEpisodeVu>   listUtilisateurEpisodeVu
from uev in listUtilisateurEpisodeVu
group uev
IQueryable列表利用UREPISODEVU
来自列表中的uev利用率
组uev

比较EF使用SQL Profiler为应用程序生成的SQL(或上下文中的日志属性)和Linqpad中的SQL选项卡。您可能会看到一些差异。感谢您的帮助,DaveShaw比较EF使用SQL Profiler为您的应用程序生成的SQL(或上下文中的日志属性)和Linqpad中的SQL选项卡。您可能会看到一些差异。感谢您的帮助DaveShawNow我知道了原因:我的查询方法返回IQueryable接口,并在不将结果转换为IEnumerable的情况下使用它避免数据库调用。如果我用IQueryable替换IEnumerable,则性能相同。现在我知道了原因:我的查询方法返回一个IQueryable接口,并且在不将结果转换为IEnumerable的情况下使用它,从而避免了数据库调用。如果我用IQueryable替换IEnumerable,则性能相同。希望能有所帮助