我是mvc和实体框架的新手,我为产品开发了一个星级评分系统。我试图获得产品的平均星级评分,我建立了这样的数据库:
用户表:UserID PK,UserName,StarRatingDetails FK
产品表:ProdactID PK,ProudactName,StarRatingDetails FK
StarRatingDetails:ProdactID PK1,UserID PK2,VoteValue
所以我试图使用像这样的实体框架.average()方法获得平均星级率:
var products = db.Products.Include(p => p.StarRatingDetail).ToList();
var voteCounts = db.StarRatingDetail.ToList();
foreach (var av in voteCounts)
{
var avarage = new { starAvarage = Convert.ToInt32(voteCounts.Average(avv => avv.VoteValue)) };
}
它可以运行并获得产品的每个平均星级费率,但是如何将平均费率与正确的产品相关联并将其发送到视图?如果有任何其他方式,我将非常感谢任何帮助。
答案 0 :(得分:1)
假设Product
与1..*
有<{1}}的关系
StartRatingDetail
注意 - 如果集合为空,var productWithVotes = db.Products.Include(p => p.StarRatingDetail)
.Select(x => new {
Product = x,
VoteAverage = x.StarRatingDetail.Average(r => r.VoteValue)
});
将抛出异常,因此在调用之前可能需要检查
Average