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

C# 如何使用其他方法访问列表,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我是.NET新手,我希望能够解决我所面临的这个小问题。我想访问Info方法中的列表,以便能够在Info课程方法中使用它。我不知道如何才能做到这一点,如果我创造了一种方法,如果一切都在一个是最好的。这些方法是分开的,因为它们具有不同的属性,在采取操作后会产生不同的结果 信息方法 public async Task<IActionResult> Info(string anoLetivo) { var nomeuc = new List<NomeUC>(); Main

我是.NET新手,我希望能够解决我所面临的这个小问题。我想访问Info方法中的列表,以便能够在Info课程方法中使用它。我不知道如何才能做到这一点,如果我创造了一种方法,如果一切都在一个是最好的。这些方法是分开的,因为它们具有不同的属性,在采取操作后会产生不同的结果

信息方法

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);
}
公共异步任务信息(字符串anoLetivo){
var nomeuc=新列表();
Main Main=新Main();
main.NomeUC=NomeUC;
//使用者
var user=await GetCurrentUserAsync();
//医生
var IDdocente=\u context.Docente.SingleOrDefault(x=>x.UserId==user.Id);
var nomeporano=(来自_context.NomeUC中的nome
在_上下文中连接unidadecurric.unidadecurrical on nome.nomucid等于unidadecurric.nomucid
在unidadecurric上加入depart.Departamento.DepartamentoId等于depart.DepartamentoId
在depart.departmentoid上的_context.Docente中加入doc等于doc.departmentoid
在_context中加入nalunos。unidadecurric上的nalunos.UnidadeCurricularId等于nalunos.UnidadeCurricularId
在_context中连接anoletivo.anoletivo on nalunos.AnoLetivoId等于anoletivo.AnoLetivoId
其中anoletivo.Ano==anoletivo&&doc.departmentoid==IDdocente.departmentoid
选择新的{
nome=nome.nome
}).ToList();
foreach(nomeporano中的var项目){
nomeuc.Add(新nomeuc{
Nome=项。Nome
});
}
返回视图(“信息课程”,主视图);
}
信息课程方法

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);
}
公共异步任务信息课程(int-ano,int-semestre){
var nomeuc=新列表();
//var docente=新列表();
var unidadecurr=新列表();
Main Main=新Main();
//main.Docente=Docente;
main.UnidadeCurricular=unidadecurr;
main.NomeUC=NomeUC;
//使用者
var user=await GetCurrentUserAsync();
//医生
var IDdocente=_context.Docente.Where(x=>x.UserId==user.Id).ToList();
变量uc=(来自nome in*nomeporano*
在_上下文中连接unidadecurric.unidadecurrical on nome.nomucid等于unidadecurric.nomucid
其中unidadecurric.anocursoral==ano&&unidadecurric.Semestre==Semestre
选择新的{
nome=nome.nome
}).ToList();
foreach(uc中的var项目){
nomeuc.Add(新nomeuc{
Nome=项。Nome
});
}
返回视图(主);
}
在uc变量中的
InfoCurrilar
方法中,我想在查询中使用Info方法中的另一个列表的值,并在执行查询后从这些值获得一个新列表

我们的想法不是在这两种方法中获得列表,而是使用nomeporano列表作为一种到那里寻找值的方法


但这种“nomeporano”在这两种方法中具有不同的属性。对于如何构建该方法,我仍然有点困惑。在信息方法中,属性是一个,但在信息课程中,有两个属性不同于另一个方法。如何构建一个方法来检索这个“nomeporano”列表,并在methods Info和InfoCoursal中使用该列表?我可以取消这些方法,但我在构建方法的过程中遇到了困难….

有两种方法:

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

2.)在单独的方法中移动以下代码,并在方法信息和信息课程中调用该方法:

缺点:针对相同的数据多次访问数据库

var nomeporano=(来自_context.NomeUC中的nome 在_上下文中连接unidadecurric.unidadecurrical on nome.nomucid等于unidadecurric.nomucid 在unidadecurric上加入depart.Departamento.DepartamentoId等于depart.DepartamentoId 在depart.departmentoid上的_context.Docente中加入doc等于doc.departmentoid 在_context中加入nalunos。unidadecurric上的nalunos.UnidadeCurricularId等于nalunos.UnidadeCurricularId 在_context中连接anoletivo.anoletivo on nalunos.AnoLetivoId等于anoletivo.AnoLetivoId 其中anoletivo.Ano==anoletivo&&doc.departmentoid==IDdocente.departmentoid 选择新的{ nome=nome.nome }).ToList()

问候,, 拉吉夫


快乐编码将
InfoCurrilar
中的共享逻辑提取到一个新方法中。从两个需要它的方法中调用它。提取共享逻辑是什么意思???我不明白你的想法…创建一个新函数-我们称它为
Bob
。将所需的共享逻辑放入
Bob
函数中。从
Info
infocourial
调用
Bob
。但这种“nomeporano”在这两种方法中具有不同的属性。对于如何构建该方法,我仍然有点困惑。在信息方法中,属性是一个,但在信息课程中,有两个属性不同于另一个方法。如何构建一个方法来检索这个“nomeporano”列表,并在methods Info和InfoCoursal中使用该列表?我可以取消这些方法,但我在构建方法的过程中被卡住了……但是这个“nomeporano”在这两种方法中具有不同的属性。对于如何构建该方法,我仍然有点困惑。在信息方法中,属性是一个,但在信息课程中,有两个属性不同于另一个方法。如何构建一个方法来检索这个“nomeporano”列表,并在methods Info和InfoCoursal中使用该列表?我可以解构这些方法,但我在构建方法的过程中被卡住了……我不知道我是否解释正确,但试着看看我在我的帖子上写了什么。。。。这就是我想做的,但我不知道为什么