我有一个 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/