我试图从评级表中获得人的平均评分,我有以下代码。我伸出结果为PersonVm类Linq的平均查询和投影
public IEnumerable SrchArtisansByBSSLR(string q, int s = 0, int l = 0, double z = 0)
{
var list = from item in _entities.People
where item.Skill.SkillName == q && item.StateId == s && item.LGAId == l && item.Ratings.Any(g => g.RatingValue == z)
group item by item.PersonId into d
select new PersonVm
{
PersonId = d.Key,
Rating = d.Average(x=>x.Ratings.Any(y=>y.RatingValue)),
LastName = item.LastName,
Skill = item.Skill.SkillName,
StateId = item.StateId,
LGAId = item.LGAId,
Address = item.Address,
Email = item.Email,
ImageSource = @"\Photos\" + item.ImageSource,
RegDate = item.RegDate
};
return list;
}
我收到以下错误
无法转换lambda表达式的委托类型“System.Func”,因为在一些块的返回类型不隐式转换为委托返回类型
和
不能隐式转换类型'double?' to'bool'ArtsHub.DataLayer
请问我的代码获得平均值有什么问题?
你可以尝试'等级= d.Ratings.Average()'' – Yahya
。任何()'返回一个布尔值 - 你的意思是'。首先()'? – CodingIntrigue
@Yahya我试过评级= d.Ratings.Average()它不能将它看作是一个可访问的成员 – pressharp