将通用列表的元素添加到字典
Posted
技术标签:
【中文标题】将通用列表的元素添加到字典【英文标题】:Adding Elements of generic list to dictionary 【发布时间】:2013-01-31 01:32:47 【问题描述】:我有一个通用列表List<String, String> ListName
我正在尝试将列表的值插入字典 Dictionary<String, int>
我查看了一些地方,但只发现将字典元素添加到列表中。而我的要求正好相反。我尝试使用 toDictionary,但它对我不起作用。不知道出了什么问题。
有没有人尝试将值从列表插入字典?
【问题讨论】:
请出示一些代码。List
接受两个类型参数? int
来自哪里?
列表是通用的,读取一个包含三个字段的文件,其中一个是int。所以这里的尝试是使用字符串列和 int 列作为键和值。
BCL 通用列表定义为List<T>
,而不是List<T,U>
。因此,您无法使用 BCL 创建List<string,string>
。我们看不到您如何存储文件中的三个字段。请显示一些代码。
显示一些你正在尝试的代码。
【参考方案1】:
我假设您的意思是 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
,如果它可能不是数字的话。
【讨论】:
我的代码很像 sa_ddam213 提到的 List你可以这样使用:
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)));
【讨论】:
【参考方案3】:我不确定整数的确切来源,但应该可以这样:
Dictionary<string, int> dict = new Dictionary<string, int>();
list.ForEach(x => dict.Add(x, theInteger));
【讨论】:
以上是关于将通用列表的元素添加到字典的主要内容,如果未能解决你的问题,请参考以下文章