将泛型列表的元素添加到字典中
本文关键字:字典 添加 元素 泛型 列表 | 更新日期: 2023-09-27 17:59:13
我有一个通用列表List<String, String> ListName
我正在尝试将列表的值插入字典Dictionary<String, int>
我查看了一些地方,但只发现在列表中添加了字典的元素。而我的要求正好相反。我试着用toDictionary,但它对我不起作用。不确定出了什么问题。
是否有人尝试过将值从列表插入字典?
我想你指的是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
。
您可以这样使用:
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)));
我不确定整数的确切来源,但类似这样的东西应该有效:
Dictionary<string, int> dict = new Dictionary<string, int>();
list.ForEach(x => dict.Add(x, theInteger));