我是.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);
}
InfoCurricular方法
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中使用该列表?我可以理解这些方法,但我被困在了构建方法的道路上……
发布于 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();
你好,拉吉夫
快乐编码
https://stackoverflow.com/questions/51497313
复制相似问题