0

ジェネリックリストを持っています。リストをForeachループして操作を実行しています。リストの最後のレコードが反復されている場合に条件を追加する必要があるシナリオがあります。

私は何をするつもりだったのですか?

リストのカウントを取得してデクリメントし、最後のレコードを特定できます

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

しかし、count または if なしでこれを実装できる簡単な代替方法は何ですか?

4

3 に答える 3

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. 同じオブジェクトがリストに表示されるのは 1 回だけです。

質問で foreach が使用されたため、この回答を提供しました。私自身、質問のコメントの1つで述べたように、インデックスベースのループを使用し、リストを逆にして、「特定の」ケースを最初に処理できるようにします。

于 2013-05-16T07:05:09.583 に答える
0

ifループ内の条件を回避できますが、forステートメントを使用する必要があり、最後の要素が反復されたかどうかのみを通知します。最後の要素の繰り返しをキャンセルする必要がある場合、これは関係ありません:

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

if (i == list.Count) // means you iterated your last element
于 2013-05-16T07:06:08.147 に答える