1

私は一般的なリストを持っていますList<String, String> ListName

リストの値を辞書に挿入しようとしていますDictionary<String, int>

場所を調べましたが、辞書の要素をリストに追加しているだけでした。私の要件は反対ですが。toDictionaryを使ってみましたが、うまくいきませんでした。何が悪かったのかわからない。

リストから辞書に値を挿入しようとした人はいますか?

4

3 に答える 3

3

私は前にList<string[]>ジェネリックを見たことがないので、あなたが意味していると思いますList<T,WhoAmI>

使用している場合は、関数List<string[]>を使用できますToDictionary

List<string[]> ListName = new List<string[]>();
ListName.Add(new[] { "Stack", "1" });
ListName.Add(new[] { "Overflow", "2" });

// Select the first string([0]) as the key, and parse the 2nd([1]) as int
Dictionary<string,int> result = ListName.ToDictionary(key => key[0], value => int.Parse(value[1]));

リストである種のカスタムオブジェクトを使用している場合も、同じ方法で行うことができます

List<MyObject<string, string>> ListName = new List<MyObject<string, string>>();
Dictionary<string, int> result = ListName.ToDictionary(key => key.String1, value => int.Parse(value.String2));


public class MyObject<T, U>
{
    public MyObject(T string1, U string2)
    {
        String1 = string1;
        String2 = string2;
    }

    public T String1 { get; set; }
    public U String2 { get; set; }
}

注:の周りにエラー チェックを追加するか、数値ではない可能性がある場合はint.Parse使用する必要があります。Int.TryParse

于 2013-02-15T05:14:25.553 に答える
1

そのように使用できます:

List<KeyValuePair<String, String>> ListName = new List<KeyValuePair<String, String>>();
Dictionary<String, Int32> dict = new Dictionary<String, Int32>();
ListName.ForEach(e=> dict.Add(e.key, Int32.Parse(e.Value)));
于 2013-02-15T05:16:12.753 に答える
0

整数がどこから来ているのか正確にはわかりませんが、次のようなものが機能するはずです:

Dictionary<string, int> dict = new Dictionary<string, int>();
list.ForEach(x => dict.Add(x, theInteger));
于 2013-02-15T05:12:58.873 に答える