C# Include path表达式必须引用在类型中定义的导航属性

C# Include path表达式必须引用在类型中定义的导航属性,c#,asp.net,entity-framework,linq,entity-framework-6,C#,Asp.net,Entity Framework,Linq,Entity Framework 6,我尝试包括以下匿名类型: 除了CompanyTitle,PeriodTypeName)之外,我还需要所有incomelist属性 我的模型部分如下所示: 但我有以下例外: 包含路径表达式必须引用导航属性 在类型上定义。使用虚线路径进行参考导航 属性和集合导航的选择运算符 财产。参数名称:路径 结果应该是Gridview的数据源。您不能使用Include来选择这样的数据。Include用于加载相关数据。您应该使用Include加载实体,然后选择所需内容。记住从CompanyId中删除.ToSt

我尝试包括以下匿名类型: 除了
CompanyTitle
PeriodTypeName
)之外,我还需要所有
incomelist
属性


我的模型部分如下所示:

但我有以下例外:

包含路径表达式必须引用导航属性 在类型上定义。使用虚线路径进行参考导航 属性和集合导航的选择运算符 财产。参数名称:路径

结果应该是Gridview的数据源。

您不能使用Include来选择这样的数据。Include用于加载相关数据。您应该使用Include加载实体,然后选择所需内容。记住从CompanyId中删除.ToString()。EF会为你做的。您的查询应如下所示:

var incomeList = ctx.IncomeLists
    .Include(i => i.Company)
    .Include(i => i.ListPeriods.Select(lp => lp.PeriodType))
    .Select(i => new 
    {
        CompanyTitle =  i.CompanyId + "/" + i.Company.CompanyName,
        PeriodTypeNames = i.ListPeriods.Select(lp => lp.PeriodType.PeriodTypeName)
    })
    .ToList();

选中此复选框,则不能包含对象。实际上,您必须包含导航属性。如果要包含两个属性,请使用include()。include()。
var incomeList = ctx.IncomeLists
    .Include(i => i.Company)
    .Include(i => i.ListPeriods.Select(lp => lp.PeriodType))
    .Select(i => new 
    {
        CompanyTitle =  i.CompanyId + "/" + i.Company.CompanyName,
        PeriodTypeNames = i.ListPeriods.Select(lp => lp.PeriodType.PeriodTypeName)
    })
    .ToList();