Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查询集合内的项目集合内的项目_C#_Asp.net_Entity Framework_Linq_Entity Framework Core - Fatal编程技术网

C# 查询集合内的项目集合内的项目

C# 查询集合内的项目集合内的项目,c#,asp.net,entity-framework,linq,entity-framework-core,C#,Asp.net,Entity Framework,Linq,Entity Framework Core,在我的.net core 2.0-mvc应用程序中,我有以下课程: public class TeamMatch { public int ID { get; set; } public virtual ICollection<IndividualMatch> Matches { get; set; } public IEnumerable<Map> GetMaps() { var list = new List<I

在我的.net core 2.0-mvc应用程序中,我有以下课程:

public class TeamMatch
{
    public int ID { get; set; }
    public virtual ICollection<IndividualMatch> Matches { get; set; }

    public IEnumerable<Map> GetMaps()
    {
        var list = new List<IndividualMatch>();
        list.AddRange(Matches.GroupBy(m => m.MatchMap.ID).Select(u => u.First()));
        return list.Select(m => m.MatchMap);
    }
}

public class IndividualMatch
{
    public int ID { get; set; }
    public Map MatchMap { get; set; }
}
public class Map
{
    public int ID { get; set; }
    public string Name { get; set; }
}
在该视图中调用TeamMatch.GetMaps()时,我得到一个NullReferenceException。特别是在这一行中,它应该在所有单独的匹配中为我提供一组独特的映射:

list.AddRange(Matches.GroupBy(p => p.MatchMap.ID).Select(g => g.First()));
我想我需要做的是“更深一层”,而不仅仅是我在这里提到的个人匹配。我如何做到这一点

我想我需要做的是“更深一层”,而不仅仅是我在这里提到的个人匹配

没错

我如何做到这一点

答案取决于您针对的ae是EF6还是EF Core,因为它们使用不同的机制来包含多个级别的相关数据。这就是为什么在问题中包含这些信息很重要

假设您使用(基于“my.net core 2.0-mvc应用程序”),是通过链接
Include
/
实现的,然后使用Include
表达式:

var dat = _context.TeamMatches
    .Include(tm => tm.Matches)
        .ThenInclude(m => m.MatchMap) // <--
    .ToList();
var-dat=\u context.TeamMatches
.Include(tm=>tm.Matches)

.ThenInclude(m=>m.MatchMap)//人们倾向于把这样的问题当作重复的问题来解决,因为你是唯一能够正确诊断的人。同意上面的评论。你需要调试,哪个对象是你代码中的空对象?谢谢,我以后会改进我的问题。谢谢,这肯定解决了它!另外,感谢您的建议,我不知道不同的实体框架,今后将努力更好地研究我的问题。
var dat = _context.TeamMatches
    .Include(tm => tm.Matches)
        .ThenInclude(m => m.MatchMap) // <--
    .ToList();