我是.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方法中使用该列表?我可以不理解这些方法,但是我仍然坚持建立方法的方式.....
答案 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();
关于, 拉吉夫