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 回答