从列表<;字符串>;到字典<;字符串,字符串>;

本文关键字:字符串 lt gt 字典 列表 | 更新日期: 2023-09-27 18:25:27

我有列表

List<string> listOfAtt = new List<string>();

其中listOfAtt[0] = "FirsName"listOfAtt[1] = "Homer"

如何创建这种类型的Dictionary<srting,string>

listOfAtt["FirsName"] = "Homer"???

从列表<;字符串>;到字典<;字符串,字符串>;

假设listOfAtt.Count是偶数,并且偶数索引处的项是唯一的,您可以执行以下操作。

Dictionary<string,string> dic = new Dictionary<string,string>();
for (int i = 0; i < listOfAtt.Count; i+=2) {
    dic.Add(listOfAtt[i], listOfAtt[i + 1]);
}

假设密钥的唯一性,LINQ-y的方法是:

Enumerable.Range(0, listOfAtt.Count / 2)
          .ToDictionary(x => listOfAtt[2 * x], x => listOfAtt[2 * x + 1]);

如果事情不是唯一的,你可以扩展这个逻辑,按键分组并返回一个Dictionary<string, List<string>>,比如:

Enumerable.Range(0, listOfAtt.Count / 2)
          .Select(i => new { Key = listOfAtt[2 * i], Value = listOfAtt[2*i+1] })
          .GroupBy(x => x.Key)
          .ToDictionary(x => x.Key, x => x.Select(X => X.Value).ToList());

最好的方法可能是使用for循环

Dictionary<string,string> dict = new Dictionary<string,string>();
for (int i = 0; i < listOfAtt.Count; i+=2){
    dict.Add(listOfAtt[i], listOfAtt[i+1]);
}