1

「有効」プロパティが true に設定されている場合にのみ反復する必要がある foreach ループがあります。残念ながら、リストの最初の項目で 'Valid' が false に設定されていると、ループ全体が終了します。

foreach ループで条件を使用するための最良の方法を知っている人はいますか? 以下は私が今持っているものです。

foreach (var course in agentNewTraining.AllCoursesTaken.TakeWhile(c => c.Valid))
4

3 に答える 3

6

メソッドを使用できますWhere

foreach (var course in agentNewTraining.AllCoursesTaken.Where(c => c.Valid))

あなたのコードが今やっていることは、条件に一致しない要素が見つかるまで要素を取得することです。たとえば、リストの最初の要素が述語と一致しない場合、空のコレクションが返されます。

于 2013-01-09T20:41:28.400 に答える
1

上記のイブの答えは正しいです。

コードをより読みやすい方法で記述していれば、コードをステップ実行することで、これを非常に簡単に解決できたはずです。

var collectionToIterate = agentNewTraining.AllCoursesTaken.TakeWhile(c => c.Valid);
foreach (var course in collectionToIterate)
{
  //...
}

collectionToIterateが期待したものではなかったことがすぐにわかります。あなたは「ループ全体を終了する」のではなく、単に反復する項目がありませんでした。

于 2013-01-09T20:48:32.480 に答える
1

代わりに使用できますWhere

foreach (var course in agentNewTraining.AllCoursesTaken.Where(c => c.Valid))

または、次のifステートメントを使用して条件を確認します。

foreach (var course in agentNewTraining.AllCoursesTaken) {
  if (course.Valid) {
    ...
  }
}
于 2013-01-09T20:48:41.247 に答える