問題タブ [addrange]

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.

0 投票する
13 に答える
121747 参照

c# - ObservableCollection は AddRange メソッドをサポートしていないため、アイテムが追加されるたびに通知を受け取りますが、INotifyCollectionChanging はどうですか?

範囲を追加して、一括全体を更新できるようにしたいと考えています。

また、アクションが完了する前にアクションをキャンセルできるようにしたいと考えています (つまり、「変更」以外のコレクションの変更)。


関連 Q 一度に複数のオブジェクトを追加して通知を受け取るための .Net コレクションはどれですか?

0 投票する
2 に答える
2145 参照

c# - AddRangeを使用してサブクラス化されたアイテムを追加できないのはなぜですか?

私には2つのクラスがあります...ParcelとFundParcel...そしてサブタイプのIEnumerableをスーパータイプのIListに変換しようとしています...

これらは、次のようにメソッドの別のクラスで使用されます。

私が理解していないのは、foreachステートメントを次のように減らすことができない理由です。

基本的に「引数の種類」というエラーが表示されます'System.Colection.Generic.IEnumerable<FundParcel>' is not assignable to parameter type 'System.Collections.Generic.IEnumerable<Parcel>'"

しかし、そうだとすれば、なぜ小包を追加するのかわかりません...

メソッド全体を次の行に置き換える必要があるように感じます。

...または、サブタイプはスーパータイプの代わりに使用できる必要があるため、メソッドを完全に破棄することもできます。

この場合のAddRangeとの取引と、この場合にforループが必要になる理由を誰かが説明できますか?

0 投票する
1 に答える
8042 参照

c# - WinフォームコンボボックスItems.AddRangeメソッドを使用する

AddRangeメソッドを使用してコンボボックスコントロールのItemsコレクションに追加しようとしているオブジェクトの配列があります。このメソッドはかかりますobject[]が、いくつかの値で初期化された配列の名前を渡すと、次のように文句を言います。

に最適なオーバーロードされたメソッドにSystem.Windows.Forms.ComboBox.ObjectCollection.AddRange(object[])は、いくつかの無効な引数があります。

配列内のオブジェクトを定義するクラスは非常に単純です。

これは私が呼ぼうとしているところですAddRange

そしてそれはそれが不平を言っている行です-これを行うことができるようにするために私が欠けているいくつかのステップがありますか?単純なものを追加するだけで問題なく動作しますstring[]

0 投票する
3 に答える
551 参照

c# - LINQ - linq クエリでのリストの結合

質問は、以下のタイプのコードに頼らずに、すべての親の子のすべてのエンティティを含む B のリストを返す方法です。単一の linq クエリ内で同じことを達成できるはずだと考えていました。

ありがとう。

0 投票する
5 に答える
11735 参照

c# - C#で1つのリストを別のリストに追加できません...AddRangeを使用しようとしています

こんにちは私は1つのリストを別のリストに追加しようとしています。以前に使用AddRange()したことがありますが、ここでは機能していないようです...コードは次のとおりです。

結果を確認するためにデバッグを行いました。これが得られたものresultCollectionです。4resultCollection2のカウントは6のカウントであり、範囲を追加した後でresultCollectionも、10のカウントが必要なときに4のカウントしかありません。

誰かが私が間違っていることを見ることができますか?どんな助けでも大歓迎です。

ありがとう、
マット

0 投票する
3 に答える
9906 参照

c# - リスト.AddRangeの実装は最適ではありません

私のC#アプリケーションのプロファイリングは、にかなりの時間が費やされていることを示しましたList<T>.AddRange。Reflectorを使用してこのメ​​ソッドのコードを確認すると、List<T>.InsertRange次のように実装されたコードが呼び出されることがわかりました。

インターフェイスの単純さ(InsertRangeのオーバーロードが1つしかない)は、ランタイムタイプのチェッキングとキャストのパフォーマンスオーバーヘッドを正当化すると主張することができます。しかし、私が示した3つの線の背後にある理由は何(*)でしょうか?私はそれをより速い代替案に書き直すことができると思います:

この単純で明らかに高速な代替手段を使用しない理由はありますか?

編集:

答えてくれてありがとう。したがって、コンセンサスの意見は、これは、CopyToを欠陥のある/悪意のある方法で実装する入力コレクションに対する保護手段であるというものです。私には、1)ランタイムタイプチェック2)一時配列の動的割り当て3)コピー操作を2倍にするという代償を絶えず支払うのはやり過ぎのように思えますが、InsertRangeの2つ以上のオーバーロードを定義することでこれをすべて節約できたはずです、1つIEnumerableは現在のように取得し、2つ目は取得しList<T>、3つ目は取得しT[]ます。後の2つは、現在の場合の2倍の速度で実行するように実装できます。

編集2:

T []引数を取るAddRangeのオーバーロードも提供することを除いて、Listと同じクラスFastListを実装しました。この過負荷は、動的な型の検証や要素の二重コピーを必要としません。最初は空だったリストに4バイト配列を1000回追加することにより、このFastList.AddRangeをList.AddRangeに対してプロファイリングしました。私の実装は、標準のList.AddRangeの速度を9倍(9!)で上回っています。List.AddRangeは、アプリケーションの重要な使用シナリオの1つでランタイムの約5%を占めます。リストを、より高速なAddRangeを提供するクラスに置き換えると、アプリケーションのランタイムが4%向上する可能性があります。

0 投票する
4 に答える
9547 参照

c# - WPF C# でコンボ ボックス AddRange を使用する方法

少し問題があります。配列があり、それをコンボボックスに追加したいので、AddRange メソッドを使用したいのですが、WPF では使用できません。コンボボックスで実行できる方法はありますか?

ありがとう。

0 投票する
4 に答える
6124 参照

c# - c#Linq`リスト.AddRange`メソッドが機能しない

私は以下のように定義されたインターフェースを持っています:

そして、そのインターフェイスを実装する2つのLinq-to-SQLクラス:

tblTestAおよびtblTestBからのデータベースレコードによって入力されたIEnumerableリストaおよびbがあります

ただし、次のことは許可されていません。

私は次のようにしなければなりません:

私が間違っていることはありますか?助けてくれてありがとう

0 投票する
2 に答える
2498 参照

c# - ラムダ Select 式内の AddRange/concat 機能

内部で参照されているすべてのアイテム ID のリストを取得するにはどうすればよいfooListですか?

0 投票する
1 に答える
1185 参照

c# - C# - チャート - シリーズへの範囲の追加

Microsoft の Charting コントロールを使用して、追加したいリストを繰り返し処理することなく、ポイントの範囲を一度に追加できますか? リストがあり、リスト全体をチャート コントロールのシリーズの Y 値として追加する必要があり、単純に「foreach」ステートメントでこれを行います。

必要以上に効率が悪いように思えました。私はGoogleでこれに対する答えを見つけようとしていますが、正直なところ、「良い」グラフの例を見つけることができませんでした(Microsoft自身が提供するものを除く)。

読んでくれてありがとう!