我有一个问题:
var query = (from persons in _entity.Persons
where persons.Id == personId select new Person
{
PersonId = (int)persons.Id,
PersonName = persons.PersonName,
PersonLastName = persons.PersonLastName,
PersonPatronymic = persons.PersonPatronymic,
PersonSigns = new PersonSigns()
{
BodyType = _entity.PersonsSignsBodyType
.Where(c => c.PersonId == persons.Id)
.AsEnumerable()
.Select(c => c.PersonBodyType).ToList()
}
});
query.ToList().FirstOrDefault();
运行查询时会抛出异常:
“表达式LINQ to Entities无法识别方法” System.Collections.Generic.List
1 [System.Nullable
1 [System.Int32]] ToList [Nullable1] (System.Collections.Generic.IEnumerable
1 [系统。 Nullable`1 [System.Int32]])“,所以它不能转换为 存储库的表达。“
但是当我删除这部分代码时 - 它可以工作:
PersonSigns = new PersonSigns()
{
BodyType = _entity.PersonsSignsBodyType
.Where(c => c.PersonId == persons.Id)
.AsEnumerable()
.Select(c => c.PersonBodyType).ToList()
}
一个人可能具有身体的一些显着特征,因此您需要将所有ID和特殊身体放在列表中。
问:如何重写内部查询?