Linq,如何使用聚合函数编写常规查询?
在我的页面上,我需要显示一个工具列表 var tools=_toolRepository.GetAll().Where(t=>t.IsActive==true).OrderByDescending(t=>t.PostDate).Take(50).ToList() 我还需要显示每个工具获得了多少选票,我可以编写一个单独的查询来完成这项工作,但这将使查询数量增加一倍 有没有办法把它们结合在一起 这是我的数据库结构 工具 身份证 名字 过期 工具投票 身份证 图利德 用户ID如何:Linq,如何使用聚合函数编写常规查询?,linq,aggregate-functions,aggregate,Linq,Aggregate Functions,Aggregate,在我的页面上,我需要显示一个工具列表 var tools=_toolRepository.GetAll().Where(t=>t.IsActive==true).OrderByDescending(t=>t.PostDate).Take(50).ToList() 我还需要显示每个工具获得了多少选票,我可以编写一个单独的查询来完成这项工作,但这将使查询数量增加一倍 有没有办法把它们结合在一起 这是我的数据库结构 工具 身份证 名字 过期 工具投票 身份证 图利德 用户ID如何: var tools
var tools = _toolRepository.GetAll().Where(t => t.IsActive == true).OrderByDescending(t => t.PostDate).Take(50).Select(tool => new { Tool = tool, votes = ToolVotes.Where(tv => tv.ToolID == tool.ToolID)} ).ToList();
假设您有1到*关系,您可以使用左连接 我无法测试此查询,但它应该是这样的
var query = (from tool in _toolRepository.GetAll().Where(t => t.IsActive == true).OrderByDescending(t => t.PostDate).Take(50)
join toolVote in toolVotes on tool.id equals toolVote.ToolId
into toolsTemp
from toolTemp in toolsTemp.DefaultIfEmpty()
select new { Tool = tool, Count = toolTemp == null ? 0 : toolTemp.Count})
.ToList();