我有一个通用列表。我正在使用Foreach
循环列表并执行我的操作。我有一个场景,如果列表的最后一条记录是迭代的,我需要添加条件。
我打算做什么?
我可以获得列表计数和减量并识别最后一条记录
foreach()
{
Count--; //Where Row is the List Count
if (Count >= 1)
{
}
}
但是,我可以在没有 count 或 if 的情况下实现这个更简单的替代方法是什么?
您可以获得对最后一项的引用并在 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
}
请记住,这段代码有以下限制:
我提供了这个答案,因为问题中使用了 foreach。正如对问题的评论之一所述,我本人会使用基于索引的循环并反转列表,以便我可以首先处理“特定”情况。
你可以避免if
循环中的条件,但你必须使用一个for
语句,它只会让你知道最后一个元素是否被迭代。如果您需要取消最后一个元素的迭代,这将不相关:
for(int i = 0; i < list.Count; i++)
{
// your operations
}
if (i == list.Count) // means you iterated your last element
枚举器无法知道它们正在迭代哪个元素。因此,您将需要使用另一种涉及条件语句的机制。
但是,由于您使用的List<T>
是支持索引的最简单的选项是:
int finalIndex = list.Count - 1;
for (int i = 0; i < list.Count; i++)
{
if (i == finalIndex)
{
// Perform required action
}
}