c# - 从 Entity Framework .NET 返回父子的多个孙子

标签 c# asp.net .net entity-framework-6 visual-studio-2017

我正在使用 VS2017 创建一个 ASP.NET Web 应用程序(不使用 CORE),.NET Framework 是 4.6.2,Entity Framework .NET 是 6.1.3。我在这里寻找我的答案,但我没有尝试过或提到过的所有内容。

我现在有以下代码来获取特定 parent 的 child 的孙子,我知道必须有一种更有效的方法来获取这些孙子,但不知道如何:

            using (_ge = new generation_entities())
        {
            if (_id != null)
            {
                List<scheduleheader> _tlist = (from a in _ge.scheduleheaders.Include("scheduledetails") where a.programID == _id select a).ToList();
                foreach (scheduleheader _t in _tlist)
                {
                    foreach (scheduledetail _s in _t.scheduledetails)
                    {
                        _s.scheddtlcustoms = (from a in _ge.scheddtlcustoms where a.dtlID == _s.dtlID select a).ToList();
                        _s.scheddtlstandards = (from a in _ge.scheddtlstandards where a.dtlID == _s.dtlID select a).ToList();
                        _s.scheddtltalks = (from a in _ge.scheddtltalks where a.dtlID == _s.dtlID select a).ToList();
                        _s.scheddtlvenues = (from a in _ge.scheddtlvenues where a.dtlID == _s.dtlID select a).ToList();
                        _s.scheduledtlrecurrences = (from a in _ge.scheduledtlrecurrences where a.dtlID == _s.dtlID select a).ToList();
                    }
                }
                return _tlist;
            }
            else
                return (from a in _ge.scheduleheaders where a.scheduledetails.Any(b => b.start > DateTime.Today.AddDays(-30)) && a.programID == null select a).ToList();
        }

我已经尝试使用 .ThenIncludeInclude("xxxx.xxxx.xxxx") 但是,.ThenInclude 甚至不可用我和 Include("xxxx.xxxx.xxxx") 只适用于一个孙子。 Include() 只允许我输入字符串路径,但我看到评论说 OP 使用的是旧版本的 EF。

我卡在这上面了,如果我在这里遗漏了什么,我能得到启发吗?

最佳答案

你可以尝试这样的事情:

            var query = context
                    .Parents
                    .Include(p=>p.children)
                    .Include(p=>p.children.Select(x=>x.Grandchild1))
                    .Include(p=>p.children.Select(x=>x.Grandchild2))
                    .ToList();

您可以使用 linq 访问它,您可能有一个 id,您可以在其中执行以下操作:

var grandchild6 = query
                   .children
                  .FirstOrDefault(child=>child.Id =1)
                 ?.GranChildern
                 ?.FirstOrDefault(grandChild=>grandchild.Id = 6);

关于c# - 从 Entity Framework .NET 返回父子的多个孙子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46856286/

相关文章:

c# - 在 C# 中创建不可为 Null 的类型

android - Android App连接SQL Server数据库的方法

c# - 从 .aspx 获取数据到 jquery ajax

javascript - ajax aspx 脚本参数波兰语(特殊)字符

c# - 基本c#问题

c# - 添加解决方案级程序集引用

c# - 我怎么知道 "assembly"是否真的改变了?

C# Unity onClick 事件中函数的参数错误

c# - 如何让用户在 C# 中选择文件位置

javascript - UWP 在 C# 中调用 javascript 并获取返回值