如何使用其他方法访问列表

时间:2018-07-24 11:21:11

标签: c# asp.net asp.net-mvc

我是.NET的新手,我希望能够解决我面临的这个小问题。我想访问Info方法中的列表,以便能够在InfoCurricular方法中使用它。我不知道该怎么做,如果我创建一个方法,那么在一件事中做到最好。这些方法是分开的,因为它们具有不同的属性,这些属性在采取措施后会导致不同的结果。

信息方法

public async Task<IActionResult> Info(string anoLetivo) {
  var nomeuc = new List<NomeUC>();
  Main main = new Main();
  main.NomeUC = nomeuc;
  //user
  var user = await GetCurrentUserAsync();
  //docente
  var IDdocente = _context.Docente.SingleOrDefault(x => x.UserId == user.Id);

  var nomeporano = (from nome in _context.NomeUC
    join unidadecurric in _context.UnidadeCurricular on nome.NomeUCId equals unidadecurric.NomeUCId
    join depart in _context.Departamento on unidadecurric.DepartamentoId equals depart.DepartamentoId
    join doc in _context.Docente on depart.DepartamentoId equals doc.DepartamentoId
    join nalunos in _context.NAlunos on unidadecurric.UnidadeCurricularId equals nalunos.UnidadeCurricularId
    join anoletivo in _context.AnoLetivo on nalunos.AnoLetivoId equals anoletivo.AnoLetivoId
    where anoletivo.Ano == anoLetivo && doc.DepartamentoId == IDdocente.DepartamentoId
    select new {
      nome=nome.Nome
    }).ToList();

  foreach (var item in nomeporano) {
    nomeuc.Add(new NomeUC {
      Nome = item.nome
    });
  }

  return View("InfoCurricular", main);
}

信息课程方法

public async Task<IActionResult> InfoCurricular(int ano, int semestre) {
  var nomeuc = new List<NomeUC>();
  //var docente = new List<Docente>();
  var unidadecurr = new List<UnidadeCurricular>();

  Main main = new Main();       
  //main.Docente = docente;
  main.UnidadeCurricular = unidadecurr;
  main.NomeUC = nomeuc;

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

  var uc = (from nome in *nomeporano*
    join unidadecurric in _context.UnidadeCurricular on nome.NomeUCId equals unidadecurric.NomeUCId
    where unidadecurric.AnoCurricular == ano && unidadecurric.Semestre == semestre
    select new {
        nome = nome.Nome
    }).ToList();

  foreach(var item in uc) {
    nomeuc.Add(new NomeUC {
      Nome = item.nome
    });
  }

  return View(main);
}

在uc变量的InfoCurrilar方法中,我想在查询中使用Info方法中另一个列表的值,并在执行查询后从这些值中获得一个新列表。

这个想法不是用两种方法获取列表,而是使用 nomeporano 列表作为去那里寻找价值的一种方式。

但是这个“ nomeporano”的属性在这两种方法中是不同的。我仍然对如何构建方法有些困惑。在Info方法中,属性是一个,但是在InfoCurricular中,有两个属性与另一个方法不同。如何构建一种方法来检索此“ nomeporano”列表并在Info和InfoCurricular方法中使用该列表?我可以不理解这些方法,但是我仍然坚持建立方法的方式.....

1 个答案:

答案 0 :(得分:-1)

有两种方法:

1。)在模型类“ Main”中添加一个属性,以保留nomeporano的完整值,由于将模型传递给方法InfoCurricular,因此可以轻松使用它。

2。)在单独的方法中移动以下代码,并在方法Info和InfoCurricular中调用该方法:

缺点:针对相同数据多次击中数据库。

var nomeporano =(来自_context.NomeUC中的nome     在_context.UnidadeCurricular上在nome.NomeUCId上加入unidadecurric等于unidadecurric.NomeUCId     在_context.Departamento中加入对unidadecurric的离开。DepartamentoId等于depart.DepartamentoId     在_context.Docente上将文档加入depart.DepartamentoId等于doc.DepartamentoId     在unidadecurric.UnidadeCurricularId上的_context.NAlunos中加入nalunos等于nalunos.UnidadeCurricularId     在_context.AnoLetivo上的nalunos上加入anoletivo.AnoLetivoId等于anoletivo.AnoLetivoId     其中anoletivo.Ano == anoLetivo && doc.DepartamentoId == IDdocente.DepartamentoId     选择新的{       nome = nome.Nome     })。ToList();

关于, 拉吉夫

快乐编码