在 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();
}

您的代码有几个问题

  1. 忽略 id通过了:假设我调用List(1234)1234789一样会被忽略在 List(789)
  2. 不要循环超过id因为你return在1st循环
  3. 之后
  4. 您将永远无法到达 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();
  }