我有一个 foreach 循环,当从 List 中选择最后一项时需要执行一些逻辑,例如:

 foreach (Item result in Model.Results)
 {
      //if current result is the last item in Model.Results
      //then do something in the code
 }

我可以知道哪个循环最后而不使用 for 循环和计数器吗?

最佳答案

如果你只需要对最后一个元素做一些事情(而不是 与最后一个元素不同的 ,那么使用 LINQ 将在这里有所帮助:

Item last = Model.Results.Last();
// do something with last

如果你需要对最后一个元素做一些不同的事情,那么你需要这样的东西:
Item last = Model.Results.Last();
foreach (Item result in Model.Results)
{
    // do something with each item
    if (result.Equals(last))
    {
        // do something different with the last item
    }
    else
    {
        // do something different with every item but the last
    }
}

尽管您可能需要编写一个自定义比较器来确保您可以判断该项目与 Last() 返回的项目相同。

这种方法应该谨慎使用,因为 Last 可能必须遍历集合。虽然这对于小型集合来说可能不是问题,但如果它变大,则可能会对性能产生影响。如果列表包含重复项,它也会失败。在这种情况下,这样的事情可能更合适:
int totalCount = result.Count();
for (int count = 0; count < totalCount; count++)
{
    Item result = Model.Results[count];

    // do something with each item
    if ((count + 1) == totalCount)
    {
        // do something different with the last item
    }
    else
    {
        // do something different with every item but the last
    }
}

关于c# - Foreach 循环,确定哪个是循环的最后一次迭代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7476174/

10-16 19:01