2017-02-14 45 views
0

上我有以下查询:嵌套组结果的服务器

var articleGroups = from article in _Context.ArticleVersions 
        group article by article.ArticleID into articleGroup 
        select new 
        { 
         ArticleID = articleGroup.Key, 
         ArticleFound = articleGroup.OrderByDescending(x => x.Version) 
                .First() 
        }; 

该查询正在对一组CMS表,用于存储版本的文章中执行。

我得到正确的结果,但我注意到当我输出'执行计划'时,SQL查询似乎每运行一次就发现一篇文章。

我假设它与OrderByDescending有关,但由于我仍然在学习Linq的来龙去脉我不确定如何改进此查询?

回答

1

试试这个:

var res = from article in _Context.ArticleVersions 
      group article by article.ArticleID into articleGroup 
      select articleGroup.OrderByDescending(x => x.Version).First() into articleOut 
      select new {ArticleID = articleOut.ArticleID, ArticleFound = articleOut.Version}; 

这组由条款ArticleID并将它们存储在articleGroup的文章。第一个选择,在按版本降序排列后,从组中的每个项目中选择第一个项目。这个结果将进入articleOut。第二个Select将articleOut的结果投影到一个新的匿名类型中。

+0

你能解释一下你在做什么吗? 您的查询按ArticleID组织文章,并将它们存储在articleGroup中。第一个选择,在按版本降序排列后,从组中的每个项目中选择第一个项目。这个结果将进入articleOut。第二个Select将项目的结果投影到一个新的匿名类型中...关于总结它? – Jacques

+0

PS。它完美地工作。谢谢 – Jacques