9

辞書リストで個別の値をループしようとしています:

だから私はキーと値のペアの辞書を持っています。

辞書リストから文字列キーの個別の値を取得するにはどうすればよいですか?

4

4 に答える 4

31
var distinctList = mydict.Values.Distinct().ToList();

または、ToList() を呼び出す必要はありません。

foreach(var value in mydict.Values.Distinct())
{
  // deal with it. 
}

編集:あなたの質問を読み違えて、辞書とは異なる値が必要だと思いました。上記のコードはそれを提供します。

キーは自動的に区別されます。だからただ使う

foreach(var key in mydict.Keys)
{
  // deal with it
}
于 2009-07-20T19:22:27.107 に答える
10

キーはディクショナリ内で区別されます。定義上

したがって、 myDict.Keysは個別のキーのリストです。

于 2009-07-20T19:23:45.823 に答える
2

個別のキーをループし、各値で何かを行う...

foreach( dictionary.Keys )
{
    // your code
}

C# 3.0 を使用していて、LINQ にアクセスできる場合:

個別の値のセットを取得するだけです:

// you may need to pass Distinct an IEqualityComparer<TSource>
// if default equality semantics are not appropriate...
foreach( dictionary.Values.Distinct() )
{
}
于 2009-07-20T19:22:54.517 に答える
0

ディクショナリが次のように定義されている場合:

Dictionary<string,MyType> theDictionary =  ...

それからあなたはただ使うことができます

var distinctKeys = theDictionary.Keys;

これはDictionary.Keysプロパティを使用します。リストが必要な場合は、次を使用できます。

var dictionaryKeysAsList = theDictionary.Keys.ToList();

これは辞書なので、キーはすでに区別されています。

ディクショナリですべての個別の値を見つけようとしている場合 (キーとは対照的に - 質問では明確ではありませんでした)、次を使用できます。

var distinctDictionaryValues = theDictionary.Values.Distinct(); // .ToList();
于 2009-07-20T19:24:17.087 に答える