我有一个通用列表。我正在使用Foreach
遍历列表并执行我的操作。我有一个场景,如果列表的最后一个记录是迭代的,我需要添加条件。
我打算做什么?
我可以获得列表计数和减少并识别最后一条记录
foreach()
{
Count--; //Where Row is the List Count
if (Count >= 1)
{
}
}
但是,更简单的替代方式是什么,我可以实现这一点,不计算或如果?
答案 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
}
请注意,这段代码有以下限制:
我提供了这个答案,因为在问题中使用了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
}
}