[英]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.