如何在LINQ查询中使用Include()方法?

时间:2018-07-26 15:33:27

标签: c# linq

我想包含我在上下文中拥有的某些实体,但是在linq查询中我不在哪里使用include方法。...在我的方法中,我使用了_context.TurnoDocente中的include,但是我根本没有任何结果...

信息方法:

public async Task<IActionResult> Index(string anoLetivo, int ano, int semestre)
{
        var turno_docente = new List<TurnoDocente>();     

        Main main = new Main();
        main.TurnoDocente = turno_docente;

        //user
        var user = await GetCurrentUserAsync();
        //docente
        var IDdocente = _context.Docente.SingleOrDefault(x => x.UserId == user.Id);

        if (ano == 0 || semestre == 0)
        {
            var nomedoc = (from nome in _context.Docente
                           join turnodoc in _context.TurnoDocente.Include(c=>c.Docente)
                                                                 .Include(c=>c.Turno)
                                                                 .Include(c=>c.Turno.MetaDisciplina) on nome.DocenteId equals turnodoc.DocenteId
                           join turno in _context.Turno on turnodoc.TurnoId equals turno.TurnoId
                           join metadisc in _context.MetaDisciplina on turno.MetaDisciplinaId equals metadisc.MetaDisciplinaId
                           join nalunos in _context.NAlunos on metadisc.MetaDisciplinaId equals nalunos.MetaDisciplinaId
                           join anoletivo in _context.AnoLetivo on nalunos.AnoLetivoId equals anoletivo.AnoLetivoId
                           where anoletivo.Ano == anoLetivo && nome.DepartamentoId == IDdocente.DepartamentoId
                           select new
                           {
                               nome = nome.DocenteId,
                               nomemeta = turno.TurnoId
                           }).ToList().Distinct();

            foreach (var itex in nomedoc)
            {
                turno_docente.Add(new TurnoDocente
                {
                  DocenteId = itex.nome,
                  TurnoId = itex.nomemeta
                });                 
            }
        }
    return View(main);
}

查看

@model ModelsLibrary.Main

@{
ViewData["Title"] = "Index";
}

<table class="table">
   <thead>
       <tr>
          <th>
            <label>Disciplina</label>
          </th>
           <th>
            <label>Docente</label>
        </th>
    </tr>
</thead>
<tbody>
    @foreach (var ite in Model.TurnoDocente)
    {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => ite.Turno.MetaDisciplina.Nome)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => ite.Docente.Nome)
                </td>
            </tr>
    }
  </tbody>

我需要获取信息而不是拥有ID,但是我不明白在哪里需要使用include方法从其他实体获取所有信息。

1 个答案:

答案 0 :(得分:0)

public async Task<IActionResult> Index(string anoLetivo, int ano, int semestre)
    {
        if (!(ano == 0 || semestre == 0))
        {
            return NotFound(); //handle parameter
        }

        //user
        var user = await GetCurrentUserAsync();
        //docente
        var IDdocente = _context.Docente.SingleOrDefault(x => x.UserId == user.Id);

        Main main = new Main();

        main.TurnoDocente = (from nome in _context.Docente
                       join turnodoc in _context.TurnoDocente.Include(c => c.Docente)
                           .Include(c => c.Turno)
                           .Include(c => c.Turno.MetaDisciplina) on nome.DocenteId equals turnodoc.DocenteId
                       join turno in _context.Turno on turnodoc.TurnoId equals turno.TurnoId
                       join metadisc in _context.MetaDisciplina on turno.MetaDisciplinaId equals metadisc.MetaDisciplinaId
                       join nalunos in _context.NAlunos on metadisc.MetaDisciplinaId equals nalunos.MetaDisciplinaId
                       join anoletivo in _context.AnoLetivo on nalunos.AnoLetivoId equals anoletivo.AnoLetivoId
                       where anoletivo.Ano == anoLetivo && nome.DepartamentoId == IDdocente.DepartamentoId
                       select new TurnoDocente //<== add this
                       {
                           DocenteId = nome.DocenteId,
                           TurnoId = turno.TurnoId,
                           Turno = ...., //init your model here
                           Docente = ....,//init your model here
                       }).ToList().Distinct();

        return View(main); //return view and give it model
    }