问一个简单的LINQ查询问题~
作业要做一个功能,根据产品ID读取评论表中的用户评分。
大概就是,某ID的商品被很多用户打分(1、2、3、4、5),我要将t_Comment中的c_level字段全部取出来相加,再除以打分次数获取平均值作为该商品的最终得分。
t_ProBaseInfo(商品基本信息表)、与t_Comment(评论表)有主外键关联。
在读取评论的时候写了一个方法获取了评论表里的数据:
public IQueryable<t_Comment> GetCommentById(string id)
{
return db.t_Comment.Where(c => c.t_ProBaseInfo.p_ProNum == id);
}
viewBag.commemt=GetCommentById(id);
我可以直接通过GetCommentById()获取到某ID商品的所有评分吗?有的话该怎么做?
如果需要另外写一条查询语句只查询评分,该怎么写。
刚刚接触LINQ,请各位大大指教~
------解决方案--------------------
List<Score> list = new List<Score>
{
new Score{Id=1,svalue=2.1},
new Score{Id=1,svalue=2.2},
new Score{Id=1,svalue=2.3},
new Score{Id=1,svalue=2.4},
new Score{Id=1,svalue=2.5}
};
var query = list.GroupBy(x => x.Id).Select(p => new { Id = p.Key, Avgvalue = p.Average(c => c.svalue) }).FirstOrDefault();
Console.WriteLine(query.Avgvalue);