将字典分配给键值

时间:2013-07-04 12:56:24

标签: c# asp.net

Dictionary<int, String> loadData = new Dictionary();

// File contains a list of filenames say for ex. 5 filenames
foreach (var file in filenames)
{
    // I want to assign like this
    loadData[id]=file;
}

如何在C#中指定loadData(key,value),以便我可以访问loadData[5] = "hello.txt";

7 个答案:

答案 0 :(得分:1)

首先:您使用的new Dictionary()无效。请改用new Dictionary<int, String>()

第二:id来自哪里?如果它只是一个计数器,您可以执行以下操作:

Dictionary<int, String> loadData = new Dictionary<int, String>();
int id = 0;
foreach (string file in filenames)
{
   loadData.Add(id++, file);
}

答案 1 :(得分:1)

如果id只是一个计数器,你可以使用数组,但仍然可以写loadData[5]="hello.txt";

var loadData = filenames.ToArray();
loadData[5]="hello.txt";

答案 2 :(得分:0)

保留一个柜台。

int i = 0;
foreach (var file in filenames) {
    ++i;
    loadData[i] = file;
}

这会将filenames中的第一项指定给loadData[1]

答案 3 :(得分:0)

我假设ID,它不是file中的值,而是循环中项目的索引

filenames.ForEach(x => loadData.Add(loadData.Count, x));

这会给你

Key   Value
0     First filename
1     Second filename
2     Third filename
etc...

如果我理解正确,这就是你想要的。或者你有一个单独的Key并希望通过某种索引(如列表)访问字典?

答案 4 :(得分:0)

这很容易。 你可以用它。

loadData.Add(1,"fileName1");

或者你把这一行放在循环中。

答案 5 :(得分:0)

使用ToDictionary()扩展方法...

int id = 1;
var loadData = filenames.ToDictionary(x => id++);

答案 6 :(得分:0)

另一种方法。

var loadData = fileNames
              .Select((fn,index)=> new {key = index, value = fn})
              .ToDictionary(x=> x.key, x=> x.value);