【发布时间】:2014-04-25 10:02:57
【问题描述】:
我正在尝试从评分表中获取人们的平均评分,我有以下代码。我将结果投影到 PersonVm 类中
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'?到“布尔”ArtsHub.DataLayer
请问我的平均代码有什么问题?
【问题讨论】:
-
你可以试试
Rating = d.Ratings.Average() -
.Any()返回一个布尔值 - 你的意思是.First()? -
@Yahya 我试过 Rating = d.Ratings.Average() 它无法将其视为可访问的成员
-
@RGraham 我带来了这些错误 1.无法将 lambda 表达式转换为委托类型 'System.Func
' 因为块中的某些返回类型不可隐式转换到委托返回类型 2。不能隐式转换类型“双”?到“布尔”
标签: c# linq entity-framework linq-to-entities