C# 查询集合内的项目集合内的项目
在我的.net core 2.0-mvc应用程序中,我有以下课程: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
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();