1

我有清单

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

在哪里listOfAtt[0] = "FirsName"listOfAtt[1] = "Homer"

我怎样才能创建一个Dictionary<srting,string>这样的

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

4

3 回答 3

9

假设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]);
}
于 2013-07-30T13:44:19.373 回答
7

假设键的唯一性,一种 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());
于 2013-07-30T13:46:33.083 回答
2

最好的方法可能是使用 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]);
}
于 2013-07-30T13:45:57.740 回答