[英]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++
無法訪問
您的代碼有幾個問題:
id
傳遞:想象我調用List(1234)
, 1234
和List(789)
789
將被忽略1st
循環后返回,因此您不會循環遍歷id
return View();
代碼:您進入循環並從中返回。我想,你想要這樣的東西:
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();
}
這是無法訪問的,因為您有這一行: return View(listafiliali);
在你的 for 循環中。 一旦遇到前面提到的返回值,該方法就會返回並在第一次 for 循環迭代中終止其執行。
循環完成后返回您的視圖
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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.