問題タブ [generic-collections]
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# - DataTable から List への配線ジェネリック メソッド
エラー 1 型 'System.Collections.Generic.List' を 'System.Collections.Generic.List' に暗黙的に変換できません
エラーを取り除く方法。そして、関数の汎用性は必要ありません。
scala - 文字列のマップを機能的にリストにマージする方法は?
私はこのような抽象化を構築しました:
this
の のマップを のマップString -> Seq[String]
とマージする必要がありthat
ます。
これは、これを行うために私が考えることができる最良の方法です:
c# - keyValuePair をディクショナリに直接追加できません
KeyValuePair<T,U>
aに aを追加したかったのですが、Dictionary<T, U>
できませんでした。キーと値を別々に渡す必要があります。これは、Add メソッドが挿入する新しい KeyValuePair オブジェクトを作成する必要があることを意味し、あまり効率的ではありません。Add(KeyValuePair<T, U>)
Add メソッドにオーバーロードがないなんて信じられません。この明らかな見落としの考えられる理由を誰か提案できますか?
c# - リスト内のアイテムの特定のオカレンスを取得する
コレクション内のすべてのアイテムを含むコレクションの特定のオカレンスを取得したいと思います。たとえば、最初のオカレンスのすべての値を取得します。たとえば、3つのオカレンスを取得します。
以下のコードがある場合、どうすればこれを達成できますか?iが1に等しい場合、コレクションの最初のオカレンスを、コレクション全体ではなく、この1つのオカレンスだけでProcessForm4PDFFormFieldsメソッドに渡します。
したがって、パラメータ「myResult」には、「i」が何であるかに基づいて渡すオカレンスの1つだけが含まれます。
c# - c# でジェネリック コレクションを処理する非型固有の方法を探しています
私の状況はこれです。複数の異なるタイプのオブジェクトに対していくつかの検証とメッセージタイプのコードを実行する必要がありますが、クリーンさ (およびコードの再利用) のために、オブジェクトに関係なく、この検証へのすべての呼び出しが基本的に同じに見えるようにしたいと考えています。オーバーロードによってこれを解決しようとしていますが、ジェネリック コレクション オブジェクトに到達するまで問題なく動作します。
次の例は、ここで話していることを明確にする必要があります。
Collection<T>
異なるタイプごとにまったく同じコードを複製する必要があるため、これは本当に無駄のように思えます。それぞれに個別のインスタンスを作成するのではなく、DoStuff
any を処理する単一のインスタンスを作成したいと思います。Collection<T>
を使用してみICollection
ましたが、これには 2 つの問題があります。1 つ目は、メソッドをICollection
公開していないことと、リスト内のオブジェクトの型がわからないため、ループを記述できないことです。を受け入れるメソッドがないため、 のようなより一般的なものを使用しても機能しません。実際のオブジェクトに適切なメソッドを呼び出す必要があります。適切なメソッドを選択し、適切にキャストするために if ステートメントのある種の巨大なリストを取得して実行するメソッドを作成すると、冗長なコードを取り除くという考え全体が無効になります。これらのメソッドをすべてコピーして貼り付けるだけでもかまいません。.Remove
foreach
object
DoStuff
object
DoStuff
object
Collection<T>
一般的な方法を使用してみましたが、これにはループDoStuff<T>
で同じ問題があります。foreach
設計時にはオブジェクトの型がわからないため、コンパイラは を呼び出させませんDoStuff(obj)
。
技術的には、コンパイラはコンパイル時にどの呼び出しを行う必要があるかを判断できる必要があります。これらはすべてプライベート メソッドであり、呼び出しで渡されるオブジェクトの特定の型は、メソッドが呼び出された時点ですべてわかっているためです。その知識は、このメソッドによって呼び出された後のメソッドには反映されていないようです。
ここではリフレクションを使用したくありません。すべてのCollection<T>
メソッドをコピーして貼り付けるよりもコードがさらに複雑になり、パフォーマンスが低下するからです。何か案は?
---編集 1--- 山かっこの html コードを使用していなかったため、ジェネリック メソッド参照が正しく表示されていないことに気付きました。これは今すぐ修正する必要があります。
---編集 2--- 以下の応答に基づいて、Collection<T>
メソッドを次のように変更しました。
ただし、これはまだ機能しません。コンパイラは、 を呼び出すときにどのオーバーロードされたメソッドを呼び出すかを判断できないためDoStuff(tmp[i])
です。
c# - ジェネリックコレクションの共分散
これをやりたい
他の場所で
プログラムのさまざまな領域でitemsourceにアクセスする必要があります。コンパイル時のタイプ情報なしでリストにアイテムを追加する必要があります。IEnumerableへのキャストは機能しますが、コレクションにアイテムを追加する必要があるため、それ以上のものが必要です。したがって、コレクションにキャストしようとします。
どうしてそれが可能でしょうか?
c# - IEnumerable の拡張: string.empty でない最後の要素を返すにはどうすればよいですか?
クラス IEnumerable の拡張メソッドを作成し、string.emptyではないコレクション内の最後のアイテムを取得するメソッドを作成したいと考えています。コレクションは常に配列であり、戻り値は文字列です。
null 値は空の文字列と見なします。
ジェネリックな方法でこれを行う方法がわかりません。型が文字列の配列になるので、ジェネリックメソッドにするべきなのだろうか。
この関数を次のように呼び出します。
どうすればこれに直面できますか?
c# - ジェネリック コレクションを使用してカスタム タイプ セーフ コレクションを実装する方法は?
クラスから派生した厳密に型指定されたコレクションを使用しましたがCollectionBase
、タイプセーフなジェネリック コレクションから継承するように変更したいと考えています。から継承することをお勧めする人もいれList<T>
ば、 を使用することをお勧めする人もいますCollection<T>
。私がやりたいことはこれです:
1) カスタム クラスがあり、そのカスタム クラスのインスタンスのみを保持するコレクションを作成しています。
2) カスタム コレクション クラスに含めたいプロパティとメソッドがいくつかあります。たとえば、Id
プロパティまたはIsBlahBlah()
メソッドが必要です。
これをどのように進める必要がありますか?CollectionBase
クラスから派生していたとき、InnerList
プロパティを使用して要素にアクセスしていました。Items
使用することを選択した場合、プロパティを使用する必要がありますCollection<T>
か?
次のようなことをしています:
正しい方法?のメソッドに干渉することなく、すぐに正しく動作しCollection<T>
ますか?
追加の質問: Google で「厳密に型指定されたコレクション」を検索すると、常にそのCollectionBase
クラスを含む結果が表示されます。厳密に型指定されたコレクションとタイプセーフ コレクションの違いは何ですか?
asp.net-mvc - データ コレクションの追加をサポートする ASP.NET MVC ビュー
私のアプリケーションは、保証請求の承認/編集に使用されます。保証請求内で、ユーザーは請求の一部として複数の「部品」を提出できます。私のモデルには、WarrantyParts の IEnumerable<> が含まれています。以下で構成されるビュー モデルを作成しました。
私の質問は、ユーザーが保証部品のコレクションを入力できるようにするビューをどのように構築すればよいですか? 1 つまたは 100 の個々のパーツを入力できます。ユーザーが [パーツの追加] ボタンをクリックすると、新しいテキスト ボックスのセットが表示されるビューを作成したいと考えています。つまり、保証部品のためだけに別のビューを作成するのではなく、既存のビューにテキスト ボックスを動的に追加したいと考えています。
部分ビューはこの要件に適合しますか、それともパーツ用に別のビューを作成する必要がありますか (私が探していたものではありませんが、最善の方法かもしれません) ここでベストプラクティスを探しています。例は素晴らしいでしょう-私はビジュアルが好きです。
ありがとう!
c# - リストから複数の要素を削除する
List<T>
疑問に思っていたのですが、LINQクエリで述語を指定して削除するアイテムを見つけるなどの操作を行わずに、ジェネリックコレクション(私の場合は)から複数のアイテムを削除するエレガントな方法はありますか?
私は少しのバッチ処理を行っています。そこでは、処理する必要のあるオブジェクトタイプをでList<T>
埋めています。Record
この処理は、各オブジェクトがデータベースに挿入されることで終了します。リストを作成し、個々のメンバーをループして処理/挿入する代わりに、N
リソースをあまり消費しないため、リストのアイテムのグループを使用してトランザクションの一括挿入を実行したいと思います(ここで、は構成ファイルに入れることができるものをN
表します) BatchSize
、または同等のもの)。
私は次のようなことをしたいと思っています:
サブセットを繰り返し処理して次のような項目を削除するのではなく、これを一度に実行する方法を探しています。
の使用を検討していましList.RemoveRange( batchSize )
たが、最初にStackOverflowのフィードバックを取得したいと思いました:) C#でのバッチ処理アルゴリズムの効率を最大化するためにどのような方法を使用しますか?
ヘルプ/提案/ヒントは大歓迎です!