我试图从这个Person
表中获取多个列。但我似乎只能在这里获得一个属性(Address
)。为什么我不能在这里做多个选择?
largeThings = DbContext.Set<Things>()
.Where(ep => ep.CreatedDate > dateTimeYesterday)
.Include(ep => ep.People
.Select(p => p.Person)
.Select(p => p.Address)).ToList();
我尝试使用匿名对象,如:
largeThings= DbContext.Set<Episode>()
.Where(ep => ep.CreatedDate > dateTimeYesterday)
.Include(ep => ep.People
.Select(p => p.Person)
.Select(p => new { p.Address, p.FirstName })).ToList();
但是这会抛出一个Navigation属性错误。有没有其他方法可以在这里选择多个列?
我希望能够从此FirstName
表中获取Address
和Person
。
答案 0 :(得分:0)
您不能使用Include
仅从其他表中获取几列。您可以全部获取它们,也可以使用自定义选择来获取所需的数据。
largeThings = DbContext.Set<Things>()
.Where(ep => ep.CreatedDate > dateTimeYesterday)
.Select(ep => new {ep, ep.People.Select(p => new {p.Person, p.Address})});
答案 1 :(得分:0)
Include
的目的是在查询结果中包含整个对象。
据我所知,Things
类和People
类之间存在1对1的关系,因此请查看以下代码:
largeThings = DbContext.Set<Things>()
.Where(ep => ep.CreatedDate > dateTimeYesterday)
.Select(ep => new
{
ep.People.Person,
ep.People.Address
}).ToList();