foreachで何回目のループかを判定する方法
カウンター変数を宣言してインクリメント
ぱっと思いつきそうなやり方です。
int i = 1;
var collection = Enumerable.Range(100, 10);
foreach (var item in collection)
{
Console.WriteLine($"{i}回目のループです。");
i++;
}
//1回目のループです。
//2回目のループです。
//3回目のループです。
//4回目のループです。
//5回目のループです。
//6回目のループです。
//7回目のループです。
//8回目のループです。
//9回目のループです。
//10回目のループです。
LinqのSelectでインデックスと値を射影
上記と結果は同じですが、ちょっとカッコイイやり方です。
var collection = Enumerable.Range(100, 10);
foreach (var item in collection.Select((x, i) => new { Index = i + 1, Value = x }))
{
Console.WriteLine($"{item.Index}回目のループです。");
}
//1回目のループです。
//2回目のループです。
//3回目のループです。
//4回目のループです。
//5回目のループです。
//6回目のループです。
//7回目のループです。
//8回目のループです。
//9回目のループです。
//10回目のループです。
foreachでループの末尾か判定
インデックスがコレクションの要素数と等しいかで判定します。
var collection = Enumerable.Range(100, 10);
foreach (var item in collection.Select((x, i) => new { Index = i + 1, Value = x }))
{
if (item.Index == collection.Count())
{
Console.WriteLine($"ループの末尾です。値:{item.Value}");
}
//ループの末尾です。値:109
}