LINQ to Entity查询优化

Kon*_*Kon 2 c# linq entity-framework entity-framework-4

我目前有以下逻辑构建一个包含4个整数的列表,其中每个整数代表某个项目ID(1,2,3或4)的所有投票的总和:

List<int> totals = new List<int>();

using (RepositoryEntities entityContext = new RepositoryEntities())
{
    totals.Add(entityContext.ItemVotes.Count(v => v.Vote == 1));
    totals.Add(entityContext.ItemVotes.Count(v => v.Vote == 2));
    totals.Add(entityContext.ItemVotes.Count(v => v.Vote == 3));
    totals.Add(entityContext.ItemVotes.Count(v => v.Vote == 4));
}
Run Code Online (Sandbox Code Playgroud)

这非常有效,但我质疑这种查询的效率,因为这似乎实际上生成并执行了4个单独的查询.理想情况下,我想要一个有效的查询,返回4个总和.

有任何想法吗?
提前致谢.

Jim*_*mmy 5

您可以将逻辑包装到一个查询中

totals.AddRange(entityContext.ItemVotes
    .Where(iv => iv.Vote >= 1 && iv.Vote <= 4)
    .GroupBy(iv => iv.Vote)
    .OrderBy(grp => grp.Key)
    .Select(grp => grp.Count());
Run Code Online (Sandbox Code Playgroud)

(这段代码未经测试,可能偏离基础,但只是抛出一个想法)