我有一个通用列表List<String, String> ListName
我正在尝试将列表的值插入字典Dictionary<String, int>
我看了几个地方,但发现只添加字典列表。虽然我的要求是相反的。我尝试使用toDictionary,但它对我没用。不确定出了什么问题。
是否有人试图将值从列表插入字典?
答案 0 :(得分: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
。
答案 1 :(得分: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)));
答案 2 :(得分:0)
我不确定整数的来源究竟在哪里,但这样的事情应该有效:
Dictionary<string, int> dict = new Dictionary<string, int>();
list.ForEach(x => dict.Add(x, theInteger));