私はそれらをリストに変換し、インデックス付きの定期的なforループを使用することができますが、IEnumerablesとしてそれらを保持する方法があるのだろうかと思います。C#で2つのIEnumerableの各要素のペアでforeachを実行する方法はありますか?
2
A
答えて
5
デフォルトでは方法はありませんが、少し簡単に拡張メソッドを追加するのは難しくありません。私はいくつかのエラーチェックを除いて、彼らが簡潔さのために同じ長さであることを確認した。
public static void ForEachPair<T1,T2>(
this IEnumerable<T1> source1,
IEnumerable<T2> source2,
Action<T1,T2> del) {
using (var e1 = source1.GetEnumerator())
using (var e2 = source2.GetEnumerator()) {
while (e1.MoveNext() && e2.MoveNext()) {
del(e1.Current, e2.Current);
}
}
}
今、あなたは以下の
var list = GetSomeList();
var otherList = GetSomeOtherList();
list.ForEachPair(otherList, (x,y) =>
{
// Loop code here
});
6
.NET 4.0の新しいZip機能が必要だと思います。 Eric Lippert blogged about it recentlyと実装の単純な形式が含まれています。
また、MoreLINQのZip.csにあります。これは、シーケンスが同じ長さでない場合、さまざまなオプションを可能にします。 "デフォルト"は.NET 4.0のように動作し、いずれかのシーケンスに要素がなくなると停止します。代わりに、より短いシーケンスを埋め込むか、例外をスローします。
+0
権利を行うことができ、それは私がそれを果たしていることが一週間かそこらのために、私は本当にPythonの約気に入っものの一つであったことはジップが内蔵されていることでした関数では、ループの伝統が必要だったケースはほとんどなく、伝統的なforループの動作を得るためにミニハックを行う必要があることを強調しました。それをintにしようとしてうれしいC#4 – Davy8
関連する問題
- 1. 2つのLinq IEnumerable <T>クエリを実行せずにマージする方法はありますか?
- 2. IEnumerableからX要素を抽出する方法はありますか?
- 3. Laravel foreachループで要素がnullの場合、要素をスキップする方法はありますか?
- 4. たPerl:2つのリストでペア要素
- 5. C++のstd :: setの2つの連続する要素を比較する方法はありますか?
- 6. foreachは各要素を次の要素に連結します
- 7. ベクトル要素の各ペアの合計を出力する - C++
- 8. nodejsのforeachループで順次実行を書く方法はありますか?
- 9. 2つのIEnumerable <T>を新しいIEnumerable <T>に連結する方法はありますか
- 10. foreachをIEnumerableオブジェクトでプレフォームする方法
- 11. デバッガの2つのインスタンスを実行する方法はありますか?
- 12. JAVAのリストの各要素で関数を実行する方法は?
- 13. Python:2つのリストの要素をペアで比較する
- 14. 実行時にJavaScriptの各行をエコーする方法はありますか?
- 15. foreachループでDevExpress.Web.ASPxGridView.ASPxGridViewの行要素を取得する方法
- 16. 2つのカスタム要素をDOM要素を共有する方法はありますか? <iron-ajax>
- 17. 2つのセットの各要素のペアごとの比較を行い、上位3つのランクリストを返す
- 18. C#ショーのIEnumerableの要素
- 19. 1つの要素に2つのvue.jsライブラリを適用できる方法はありますか?
- 20. DIV要素の2つの要素をボトムアラインする方法は?
- 21. Pythonでm * nサイズの行列に2つの隣接要素をペアにする方法
- 22. には、コレクションの各要素を検索する方法があります。#
- 23. 2回実行するのではなく、結果の1つをテストする方法はありますか?
- 24. オンラインでsharepointのC#スクリプトを実行する方法はありますか?
- 25. 2つの異なる配列のすべての要素のペアを素早く見つける方法
- 26. jsoup経由で要素のペアを取得する方法は?
- 27. 同じ行に2つのdiv要素があります
- 28. Pythonのリストタプルを2つの要素を持つタプルに分割する方法はありますか?
- 29. jQueryで2つの要素のグループをラップする方法は?
- 30. 関数内ですべてを実行するには、各行を待つ必要がありますか?
IMO、あなたはそれを正しく持っています、Zipは何か異なっています。 – leppie
@ジャレッド:私はあなたの "if"を "while"とすることを意味したと思います。 @leppie:これは、実行するデリゲートを渡すのではなく、IEnumerable(あなたはforeachで動作することができます)として結果を提供する以外、 "Zip"とはどのように違うのですか? –
便利な小さな機能があります。小さな提案:usingステートメントをネストする必要はありません。 – Noldorin