繁体   English   中英

将LINQ到实体查询组合成单个查询

[英]Combining LINQ-to-Entities Queries into Single Query

我有一个实体框架实体Provider ,其中包含该提供商的评级投票列表。 我当前的查询看起来像这样:

int previousVote = provider.ProviderRankings.FirstOrDefault(r => r.UserId == CurrUserId);
double averageVote = provider.ProviderRankings.Average(r => r.Rating);
int totalVotes = provider.ProviderRankings.Count();

这似乎在功能上是正确的。 但是,我相信这将导致另外三次访问数据库。 无论如何将这些请求合并到一个查询中,这样只会发送一个SQL查询,并且只返回一次服务器,所有结果都可以返回吗?

您可以使用Group By相当轻松地组合两个聚合:

单个Linq-to-Entities查询中的多个SQL聚合函数

如果您为分组选择一个适当模糊的键(例如key = 0),我很确定FirstOrDefault会工作,即:

from t in ProviderRankings
  group t by key = 0
  into g
  select new {
     previousVote  = g.FirstOrDefault(r => r.UserId == CurrUserId),
     totalVotes = g.Count(),
     averageVote = g.Average(x => x.Rating)
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM