确定列表中的最后一个值并添加条件

本文关键字:添加 条件 最后一个 列表 | 更新日期: 2023-09-27 18:13:55

我有一个通用列表。我使用Foreach循环遍历列表并执行我的操作。我有一个场景,我需要添加条件,如果列表的最后一个记录是迭代的。

我打算做什么?

我可以得到列表计数和递减,并确定最后一个记录

foreach()
{
Count--;   //Where Row is the List Count
if (Count >= 1)
{   
}
}

但是什么是更简单的替代方法,我可以实现这个没有计数或如果?

确定列表中的最后一个值并添加条件

可以避免循环中的if条件,但是必须使用for语句,并且它只会让您知道最后一个元素是否被迭代。如果你需要取消最后一个元素的迭代,这将不相关:

for(int i = 0; i < list.Count; i++)
{
    // your operations
}
if (i == list.Count) // means you iterated your last element

您可以获取对最后一项的引用,并在foreach中检查该引用。我将通过使用LINQ Last方法来做到这一点。像这样:

var lastitem = list.Last();
foreach (var item in list) {
    if (item == lastItem)
        // Do your specific check here.
    else
        // rest of the loop
}

请记住,这段代码有以下限制:

    只对引用类型有效,对值类型无效。
  1. 同一个对象只能在列表中出现一次。

我提供这个答案是因为在问题中使用了foreach。我自己会像在一个评论中提到的那样,使用基于索引的循环并反转列表,这样我就可以先处理"特定"的情况。

枚举器无法知道它们迭代的是哪个元素。因此,您将需要使用涉及条件语句的另一种机制。

但是,由于您使用的是支持索引的List<T>,最简单的选项是:

int finalIndex = list.Count - 1;
for (int i = 0; i < list.Count; i++)
{
    if (i == finalIndex)
    {
        // Perform required action
    }
}