C# 找到最大的求和值并取3
我有这段代码(不确定它是否有效,因为我无法测试它):C# 找到最大的求和值并取3,c#,.net,linq,nhibernate,C#,.net,Linq,Nhibernate,我有这段代码(不确定它是否有效,因为我无法测试它): var test=base.UnitOfWork.Session.Query() .其中(x=>x.nutrionalserving.Id==servingId) .GroupBy(x=>x.UserVerifiedFacts) .OrderByDescending(x=>x.Sum(e=>e.UserVerifiedFacts.Count()) .采取(3) .选择(r=>new { c=右键, Sum=r.Sum(x=>x.UserVer
var test=base.UnitOfWork.Session.Query()
.其中(x=>x.nutrionalserving.Id==servingId)
.GroupBy(x=>x.UserVerifiedFacts)
.OrderByDescending(x=>x.Sum(e=>e.UserVerifiedFacts.Count())
.采取(3)
.选择(r=>new
{
c=右键,
Sum=r.Sum(x=>x.UserVerifiedFacts.Count())
})
.ToList();
我想做的是找到所有的营养事实,它们都有正确的服务ID
。然后,我想计算每个营养学事实
发现的用户验证信息的数量。然后我想得到前3个结果并使用它们
我现在所做的会导致一个“未实现”错误,这显然是因为nhibernate sum只能处理任何参数
我想试试:
var test = ...Query<NutritionFact>()
.Where(x => x.NutritionalServing.Id == servingId)
.Select(x=> new { Nf= x, VfCount= x.UserVerifiedFacts.Count() })
.OrderByDescending(x => x.VfCount))
.Take(3)
.ToList();
你能把涉及到的课程和它们之间的关系贴出来吗。我不知道如果没有这个,我如何查询“有多少用户验证了信息”。Ok。我将发布一个带有显示键的表的屏幕截图(否则也必须是无用的列)。
var test = ...Query<NutritionFact>()
.Where(x => x.NutritionalServing.Id == servingId)
.Select(x=> new { Nf= x, VfCount= x.UserVerifiedFacts.Count() })
.OrderByDescending(x => x.VfCount))
.Take(3)
.ToList();
SELECT TOP 3 n.*,
(SELECT COUNT(*) FROM UserVerifiedFact uv WHERE uv.NuturitionFacts_Id = n.Id) AS NumbOfVer
FROM NutritionFact n
WHERE n.NutritionalServing_Id = @servingId
ORDER BY NumbOfVer DESC