2

シナリオ

同じサイトでこれに関する投稿をすでに読んだことがありましたが、うまくいきませんでした。少し困惑していますが、以前にこれを行ったことがあると確信しています。

私は辞書を持っています。辞書から最初の200個の値を取得したいと思います。

コード

  Dictionary<int,SomeObject> oldDict = new Dictionary<int,SomeObject>();
  //oldDict gets populated somewhere else.
  Dictionary<int,SomeObject> newDict = new Dictionary<int,SomeObject>();
  newDict = oldDict.Take(200).ToDictionary();

明らかに、テイクはIENumerableを返すため、ToDictionary()を実行して、同じタイプのディクショナリに戻す必要があります。しかし、それは機能しません、それはいくつかのランダムなキーセレクターのものを必要とします-または何か?私はそれをキャストすることさえ試みましたが、役に立ちませんでした。何か案は?

4

1 に答える 1

5

これを試して:

newDict = oldDict.Take(200).ToDictionary(x => x.Key, x => x.Value);

基本的に、辞書を使用すると、キーと値のペアを反復処理できます。辞書に戻したいときは、キーとして何を使用し、値として何を使用するかを指定する必要があります。

ただし、辞書には「最初の200個の値」の概念がないため、コードの正確性に疑問があります。辞書内の順序に依存しないでください。これにより、基本的に、辞書内から効果的に任意の200エントリが得られます。

あなたは何をしようとしているのですか?「最初の」200エントリについてどう思いますか?

于 2010-03-26T15:50:17.550 に答える