无法在列

时间:2016-10-20 03:26:31

标签: c# .net entity-framework linq

我试图从这个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表中获取AddressPerson

2 个答案:

答案 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();