在 c# 方法中的 for 循环中增加无法访问
increment unreachable in for loop in c# method
我在这个for
循环
中得到了这个无法访问的代码
public IActionResult List(int id) {
for (id = 0; id <= 1000; id++) {
var fil = _repoFil.GetById(id).Result;
var listafiliali = new List<FilialeVM>();
foreach (var filiale in fil) {
var filialeVM = _mapper.Map<FilialeVM>(fil);
listafiliali.Add(filialeVM);
}
return View(listafiliali);
}
return View();
}
增量id++
无法访问
无法访问,因为您的 for 循环中有此行:return View(listafiliali);
。方法 returns 并在第一个 for-loop 迭代中终止执行,一旦它达到前面提到的 return。
return 循环结束后的视图
public IActionResult List(int id) {
var listafiliali = new List<FilialeVM>();
for (id = 0; id <= 1000; id++) {
var fil = _repoFil.GetById(id).Result;
foreach (var filiale in fil) {
var filialeVM = _mapper.Map<FilialeVM>(fil);
listafiliali.Add(filialeVM);
}
}
if(listafiliali.Count > 0)
return View(listafiliali);
return View();
}
您的代码有几个问题:
- 你忽略
id
通过了:假设我调用List(1234)
,1234
和789
一样会被忽略在 List(789)
- 你不要循环超过
id
因为你return在1st
循环 之后
- 您将永远无法到达
return View();
代码:您进入循环并从中return。
我想,你想要这样的东西:
using System.Linq;
...
public IActionResult List(int id) {
// for given id we collect all corresponding FilialeVM items
var listafiliali = _repoFil
.GetById(id) // items correspond to given id
.Result
.Select(fil => _mapper.Map<FilialeVM>(fil)) // mapped to FilialeVM
.ToList(); // organized as list
// If we have any item in listafiliali, view them, otherwise use default View()
return listafiliali.Any()
? View(listafiliali)
: View();
}
或者如果你不希望id
被传递而是扫描id = [0..1000]
范围:
public IActionResult List() {
// for id in [0..1000] range we collect all corresponding FilialeVM items
var listafiliali = Enumerable
.Range(0, 1000 + 1)
.SelectMany(id => _repoFil
.GetById(id) // items correspond to given id
.Result
.Select(fil => _mapper.Map<FilialeVM>(fil))) // mapped to FilialeVM
.ToList(); // organized as list
// If we have any item in listafiliali, view them, otherwise use default View()
return listafiliali.Any()
? View(listafiliali)
: View();
}
我在这个for
循环
public IActionResult List(int id) {
for (id = 0; id <= 1000; id++) {
var fil = _repoFil.GetById(id).Result;
var listafiliali = new List<FilialeVM>();
foreach (var filiale in fil) {
var filialeVM = _mapper.Map<FilialeVM>(fil);
listafiliali.Add(filialeVM);
}
return View(listafiliali);
}
return View();
}
增量id++
无法访问
无法访问,因为您的 for 循环中有此行:return View(listafiliali);
。方法 returns 并在第一个 for-loop 迭代中终止执行,一旦它达到前面提到的 return。
return 循环结束后的视图
public IActionResult List(int id) {
var listafiliali = new List<FilialeVM>();
for (id = 0; id <= 1000; id++) {
var fil = _repoFil.GetById(id).Result;
foreach (var filiale in fil) {
var filialeVM = _mapper.Map<FilialeVM>(fil);
listafiliali.Add(filialeVM);
}
}
if(listafiliali.Count > 0)
return View(listafiliali);
return View();
}
您的代码有几个问题:
- 你忽略
id
通过了:假设我调用List(1234)
,1234
和789
一样会被忽略在List(789)
- 你不要循环超过
id
因为你return在1st
循环 之后
- 您将永远无法到达
return View();
代码:您进入循环并从中return。
我想,你想要这样的东西:
using System.Linq;
...
public IActionResult List(int id) {
// for given id we collect all corresponding FilialeVM items
var listafiliali = _repoFil
.GetById(id) // items correspond to given id
.Result
.Select(fil => _mapper.Map<FilialeVM>(fil)) // mapped to FilialeVM
.ToList(); // organized as list
// If we have any item in listafiliali, view them, otherwise use default View()
return listafiliali.Any()
? View(listafiliali)
: View();
}
或者如果你不希望id
被传递而是扫描id = [0..1000]
范围:
public IActionResult List() {
// for id in [0..1000] range we collect all corresponding FilialeVM items
var listafiliali = Enumerable
.Range(0, 1000 + 1)
.SelectMany(id => _repoFil
.GetById(id) // items correspond to given id
.Result
.Select(fil => _mapper.Map<FilialeVM>(fil))) // mapped to FilialeVM
.ToList(); // organized as list
// If we have any item in listafiliali, view them, otherwise use default View()
return listafiliali.Any()
? View(listafiliali)
: View();
}