辞書をC#のリストコレクションに変換する


93

辞書をリストに変換しようとすると問題が発生します。

テンプレート文字列をキー、文字列を値として持つ辞書の例。次に、辞書キーを文字列としてリストコレクションに変換します。

Dictionary<string, string> dicNumber = new Dictionary<string, string>();
List<string> listNumber = new List<string>();

dicNumber.Add("1", "First");
dicNumber.Add("2", "Second");
dicNumber.Add("3", "Third");

// So the code may something look like this
//listNumber = dicNumber.Select(??????);

5
辞書からキーのリストを求めていますか?もしそうなら、あなたにそれを与えるであろう辞書のKeysプロパティがあります。
Brian Rasmussen、

回答:


175

キーを独自のリストに変換するには:

listNumber = dicNumber.Select(kvp => kvp.Key).ToList();

または、selectを使用して煩わしくないように短縮することもできます。

listNumber = dicNumber.Keys.ToList();

@ブライアン-編集中にそこにたどり着いた。最初に選択方法を表示したかったのは、OPがそれを尋ねた後、代わりの方法を示したからです。:-)
Justin Niessner、

だから私は考え出したので、コメントを削除しました。
Brian Rasmussen、

1
これは本当に役に立ちました。キーを返す前に.Where(...)をdictに適用する必要がありましたが、そのメソッドは辞書を返さないため、Keysプロパティにアクセスできませんでした。これは、選択した後に使用して偉大な働いた
マルティン・コル

22

または:

var keys = new List<string>(dicNumber.Keys);

4
.NET Compact Framework 2.0(Linqではない)を使用することは、私にとって最良のオプションでした。
Michael Murphy、

LINQを使用できない場合は、このオプションが最適です。
user2000950


9

キーを変換したい場合:

List<string> listNumber = dicNumber.Keys.ToList();

それ以外の場合は、値を変換します。

List<string> listNumber = dicNumber.Values.ToList();

これは機能しますが、期待どおりの順序ではない可能性があります。dictが以前にキーで順序付けされていたとしても、dict.Valuesは...
BooNonMooN


3

辞書キーコレクションを1つのメソッド引数に渡したい場合。

List<string> lstKeys = Dict.Keys;
Methodname(lstKeys);
-------------------
void MethodName(List<String> lstkeys)
{
    `enter code here`
    //Do ur task
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.