3 回答
TA贡献1803条经验 获得超6个赞
您的异常具有在这里解释问题的重要细节:
LINQ to Entities 中仅支持无参数构造函数和初始值设定项。
要使用对象初始值设定项语法将值放入PartenaireMapItem对象中,您可以.AsEnumerable()在.Where(...). 使用 AsEnumerable() 将允许您使用 LINQ to Objects 功能。
return db.Partenaires
.Where(p => p.PartenairePrestations.Any(pp => pp.Prestation.NomPrestation == prestation.Value))
.AsEnumerable()
.Select(p => new PartenaireMapItem {
IdPartenaire = p.IdPartenaire,
FirstName = p.FirstName,
LastName = p.LastName,
NomComplet = p.LastName.Substring(0,1).ToUpper() + ". " + p.FirstName,
Type = p.Type,
DureeMin = 50,
Lat = p.Lat,
Lng = p.Lng,
ImageUrl = p.ImageUrl,
SeDeplace = p.SeDeplace,
ADomicile = p.ADomicile,
NoteGlobale = p.NoteClientPartenaires.Sum(x => ((double)(x.NoteAimabilite + x.NotePonctualite +
x.NoteProprete + x.NoteQualite)) / 4) / p.NoteClientPartenaires.Count,
Prestations = new List<string>(p.PartenairePrestations.Select(y => y.Prestation.NomPrestation))
}).ToList();
TA贡献2080条经验 获得超4个赞
实体框架为您实例化对象。为了能够这样做,它希望您的类中有一个没有参数的构造函数。检查您的类是否具有这样的构造函数(我没有看到)。
请记住,您的类中可以有多个构造函数。
TA贡献1772条经验 获得超5个赞
例外是因为这里
Prestations = new List<string>(p.PartenairePrestations.Select(y => y.Prestation.NomPrestation))
您正在使用List<T>
带IEnumerable<T>
参数的构造函数,并且如异常消息所示,LINQ to Entities 仅允许无参数构造函数,即没有参数的构造函数。
只需将其替换ToList
为可识别的扩展方法,因此 EF 查询转换器支持:
Prestations = p.PartenairePrestations.Select(y => y.Prestation.NomPrestation).ToList()
- 3 回答
- 0 关注
- 306 浏览
添加回答
举报