识别列表中的最后一个值并添加条件

时间:2013-05-16 06:59:41

标签: c# list

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

我打算做什么?

我可以获得列表计数和减少并识别最后一条记录

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

但是,更简单的替代方式是什么,我可以实现这一点,不计算或如果?

3 个答案:

答案 0 :(得分:0)

您可以获取对最后项目的引用,并在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. 它仅适用于引用类型而非值类型。
  2. 同一个对象只能在列表中出现一次。
  3. 我提供了这个答案,因为在问题中使用了foreach。我自己会在问题的一个评论中提到使用基于索引的循环并反转列表,以便我可以首先处理“特定”案例。

答案 1 :(得分:0)

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

for(int i = 0; i < list.Count; i++)
{
    // your operations
}

if (i == list.Count) // means you iterated your last element

答案 2 :(得分:0)

调查员无法知道他们正在迭代哪个元素。因此,您需要使用另一种涉及条件语句的机制。

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

int finalIndex = list.Count - 1;

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