首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在另一种方法中访问列表

如何在另一种方法中访问列表
EN

Stack Overflow用户
提问于 2018-07-24 19:21:11
回答 1查看 112关注 0票数 1

我是.NET的新手,我希望能够解决我面临的这个小问题。我想访问在Info方法中的列表,以便能够在InfoCurricular方法中使用它。如果我创建了一个方法,如果在一个方法中做所有的事情都是最好的,我不知道我该怎么做。这些方法是分开的,因为它们具有不同的属性,在执行操作后会产生不同的结果。

信息方法

代码语言:javascript
复制
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);
}

InfoCurricular方法

代码语言:javascript
复制
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中使用该列表?我可以理解这些方法,但我被困在了构建方法的道路上……

EN

回答 1

Stack Overflow用户

发布于 2018-07-24 20:10:49

有两种方法可以做到:

1.)在模型类"Main“中添加一个属性来保留nomeporano的完整值,由于您将模型传递给方法InfoCurricular,因此可以很容易地使用它。

2.)将下面的代码移动到单独的方法中,并调用方法Info和InfoCurricular中的方法:

缺点:对于相同的数据,多次访问数据库。

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 && select new {nome=nome.Nome }).ToList();

你好,拉吉夫

快乐编码

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51497313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档