問題タブ [ienumerable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 2 つの IEnumerable を一緒にマージ (または圧縮) するにはどうすればよいですか?
KeyValuePair で結合された要素のインデックスが同じである にマージしたい と がIEnumerable<T>
あります。私は IList を使用していないので、マージするアイテムのカウントやインデックスがないことに注意してください。これを達成するにはどうすればよいですか?私はLINQの回答を好みますが、エレガントな方法で仕事を成し遂げるものは何でもうまくいきます.IEnumerable<U>
IEnumerable<KeyValuePair<T,U>>
.net - IEnumerable かどうかを判断する別の IEnumerable のオブジェクトを含む
私は2つ持っていますIEnumerable<int>
y の int が x に存在するかどうかを判断する最良の方法は何ですか?
現在私は使用しています:
ループしてそれぞれを個別にテストする方がはるかに高速でしょうか?
リストは比較的軽量で、x の int は 50 以下、y の int は 4 以下です。
c# - 無限の可能性のあるリストに対するLINQクエリ
私は現在、いくつかのプロジェクトオイラーの問題を行っていますが、初期の問題には、フィボナッチ数や素数などが含まれることがよくあります。それらを繰り返すことは、少なくともコードの読みやすさと知覚される「エレガンス」において、LINQに自然に適合しているようです(言語の感触を得るために、可能な場合は言語固有の機能を使用しようとしています)。
私の問題は、特定の制限までの数字のセットだけが必要な場合、これをどのように表現するのが最善かということです。現在、イテレータでそれぞれの制限をハードコーディングしていますが、特定の制限を超えているため、外部の何かがリストをクエリしないことを決定するまで、列挙子がリストを返すようにしたいと思います。つまり、基本的には無限のイテレータが存在する可能性がありますが、そこからは有限の数のセットしか取得しません。関数型言語ではそのようなことは些細なことですが、C#でもそれが可能かどうか疑問に思います。私が持っていた他の唯一のアイデアは、他のシーケンスの場合と同様に、特定の制限まで素数を返すイテレータPrimes(long)を用意することでした。
何か案は?
c# - C# インターフェイスに問題がある
私はこれの理由を理解しようとしています...そして、IInterface構文を使用するときにコンパイラに何をするように指示しているのかという概念を理解するのに本当に苦労しています。「これは何が起こっているのか」という方法で説明できる人はいますか?
とにかく...私の主な質問は....
違いは何ですか
と
なぜあなたは一方を他方よりも使用するのですか?
.net - IEnumerable.Contains と一緒に使用した場合の IEqualityComparer.Equals は、リスト内の値が x または y ですか?
IEnumberable には、2 つのパラメーターを受け取る拡張メソッド Contains<T> があります。最初のパラメータはチェックする値で、2 番目のパラメータは IEqualityComparer の実装です。IEqualityComparer.Equals を見ると、1 番目と 2 番目のオブジェクトを比較するために、x と y という名前の 2 つのパラメーターが必要です。
私の質問は、X または Y が IEnumerable の値ですか?
例
最初の値の Equals メソッドを呼び出すと、Equals("a","d") または Equals("d","a") になりますか?
c# - Enumerable.Intersperseの拡張メソッド?
私はHaskellから散在関数を学び、c#での実装を探していました。
Intersperseは、IEnumerable<T>ソースとT要素の2つの引数を取ります。ソースのすべての要素の間に要素が挿入されたIEnumerableを返します。
考えられるユースケースの1つは、整数のリストの間に任意の整数を配置することです。次に例を示します。
これはstring.Join(...)の一般的なケースです。
c# - LinqでDataTableを固定サイズのチャンクに分割するきれいな方法は何ですか?
更新:同様の質問があります
DataTable
数千の があるDataRows
とします。
処理のためにテーブルを小さな行のチャンクに分割したいと思います。
C#3 の改善されたデータ処理能力が役立つのではないかと考えました。
これは私がこれまで持っているスケルトンです:
何を置き換える必要があるかについて何か提案はありChunkifyTableIntoSmallerChunksSomehow
ますか?
誰かが C#3 ツールにアクセスしてこれを行う方法に非常に興味があります。これらのツールを適用しようとするのが不適切な場合は、説明してください!
更新 3 (列挙型ではなくテーブルが本当に必要なため、チャンクを修正しました。拡張メソッドを使用します。Jacob に感謝します):
最終的な実装:
チャンクを処理する拡張メソッド:
アドホック テストからのサンプル出力を含む、その拡張メソッドのコンシューマの例:
c# - IEnumerableを壊すEnumerable.Rangeを使用するクエリ
次のIEnumerableLINQクエリがあります。
それはそれらの桁の五乗の合計として書くことができるすべての数の合計を見つけます。プロジェクトオイラー問題30です
そのままで問題なく動作します。私はそれがニッチであることを知っています、しかし範囲は私を悩ませます。基本的には1,000,000で正しい結果が得られたと推測しているので、そこで停止させます。このシナリオでは、数は十分でした。
ただし、これはハードコードされた「乱数」にすぎません。コードを見ると、どこp == sumofPowers.Sum()
が真であるかすぐに、ループを実際に実行する必要がなくなっていることがわかります。
私はyield
他の状況でそれを行うことができbreak
、通常のループで動作することを知っています-それで、この状況であなたができることはありますか?
c# - IListに.ForEach()があるのはなぜですかIEnumerableではありません?
.ForEach()
使用するのに適したイディオムであるLINQ-yコードを記述しているときに気づきました。たとえば、次の入力を受け取り、これらの出力を生成するコードを次に示します。
そしてコード:
最後から2番目の行の.ToList()
前に挿入されていることに注意してください。.ForEach()
.ForEach()
の拡張メソッドとして使用できないのはなぜIEnumerable<T>
ですか?このような例では、それは奇妙に思えます。
c# - IEnumeratorのクローンを作成できないのはなぜですか?
基本的なSchemeインタープリターをC#で実装する際に、恐ろしいことに、次の問題を発見しました。
IEnumeratorにはcloneメソッドがありません!(より正確には、IEnumerableは「クローン可能な」列挙子を提供できません)。
私が欲しいもの:
効率的にクローン化可能なIEnumerator(ベクトル、リンクリストなど)を提供できないIEnumerableの実装を思い付くことができません。すべて、上記で指定したIEnumeratorのClone()の簡単な実装を提供できます...とにかくReset()メソッドを提供するよりも簡単です!)。
Cloneメソッドがないということは、シーケンスを列挙するという機能的/再帰的なイディオムが機能しないことを意味します。
また、IEnumerableをLispの「リスト」(car / cdrを使用して再帰的に列挙する)のように「シームレスに」動作させることができないことも意味します。つまり、「(cdr some IEnumerable)」の唯一の実装はひどく非効率的です。
効率的な「Clone()」メソッドを提供できないIEnumerableオブジェクトの現実的で便利な例を誰かが提案できますか?「yield」構造に問題があるということですか?
誰かが回避策を提案できますか?