C# 如何包含子类

C# 如何包含子类,c#,asp.net-mvc,entity-framework,include,C#,Asp.net Mvc,Entity Framework,Include,有人能帮我回答这个.net mvc问题吗 我有以下课程: public class ImportItem { [Key] public int Id { get; set; } } public class ImportItemListTemplate { [Key] public int Id { get; set; } public string Name { get; set; } public List<ImportItem>

有人能帮我回答这个.net mvc问题吗

我有以下课程:

public class ImportItem
{
    [Key]
    public int Id { get; set; }
}

public class ImportItemListTemplate
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
    public List<ImportItem> ImportItemList { get; set; }
}

public class Context : DbContext
{
    public DbSet<ImportItemListTemplate> ImportItemListTemplates { get; set; }
}
但这不包括ImportItemListTemplate类中的ImportItemList。我想我需要包括财产进口清单,但我不知道怎么做

我试过这样的想法:

ImportItemListTemplate tmp = context.ImportItemListTemplates.Include(i => i.ImportItemList).SingleOrDefault(x => x.Id == id);
但它不起作用。错误:

无法将lambda表达式转换为“string”类型,因为它不是 “委托类型”


非常感谢您的帮助。

您的代码应该如下所示

ImportItemListTemplate tmp = context.ImportItemListTemplates.Include("ImportItemList").SingleOrDefault(x => x.Id == id);
试试这个:

ImportItemListTemplate tmp = context.ImportItemListTemplates
                                    .Include(i => i.ImportItemList)
                                    .Where(x => x.Id)
                                    .SingleOrDefault();
接受一个字符串,因此使用lambda将不愉快

我想您需要的是
System.Data.Entity
命名空间中的扩展方法,尤其是接受表达式的扩展方法。有了它,您可以使用如下语法

query.Include(e => e.Level1Collection)
从数据库加载集合属性。

如果未使用列表将名称空间添加到
中,请添加名称空间,然后重试该代码。

欢迎使用Stackoverflow。请阅读并确认,您缺少一个使用声明。非常感谢!就是这样。-)还有一个问题:假设我在ImportItem类中有另一个属性(我的类的-DbTbl)。我也想包括在内。我尝试过这样的想法:ImportItemListTemplate tmp=context.ImportItemListTemplates.Include(“ImportItemList”).Include(“DbTbl”).SingleOrDefault(x=>x.Id==Id);但是我不工作。因此,如果属性处于同一级别(ImportItemListTemplates类的属性),而不是在此级别下,则可以。亲爱的Petr,您必须在ImportItemListTemplate类中添加导航属性。它看起来像是
公共虚拟列表DbTbls{get;set;}
要了解更多信息,您可以试试这个,谢谢您的快速回答。Net的答案正是我想要的——只是字符串属性名。你的解决方案和我的一样有同样的错误(如果我理解的很好的话)。谢谢你的快速回复。没错,我不能用lambda。Uzmanim.Net解决方案非常清晰,完全符合我的要求。我添加了这个名称空间,现在就可以了。-)谢谢。
query.Include(e => e.Level1Collection)