查询集合内部的项目

时间:2018-07-14 20:43:48

标签: 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<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; }
}

这将从控制器传递到视图:

public IActionResult Index()
{
    var dat = _context.TeamMatches.Include(tm => tm.Matches).ToList();
    return View(dat);
}

在该视图中调用TeamMatch.GetMaps()时收到NullReferenceException。特别是在这行代码中,应该在所有的IndividualMatches中为我提供一系列独特的地图:

list.AddRange(Matches.GroupBy(p => p.MatchMap.ID).Select(g => g.First()));

我认为我需要某种程度的提高,而不仅仅是我在其中包括的IndividualMatch。我该怎么做?

1 个答案:

答案 0 :(得分:1)

  

我认为我需要某种程度的提升,而不仅仅是我在其中包含的IndividualMatch。

是的。

  

我如何做到这一点?

答案取决于您定位的目标Entity Framework-EF6或EF Core,因为它们使用不同的机制来包含多个级别的相关数据。这就是为什么在问题中包含此类信息很重要的原因。

假设您使用EF Core(基于“我的.net core 2.0-mvc应用” ),则Including multiple levels是通过链接Include / { {1}}表达式:

ThenInclude