2
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;
}

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

4

7 回答 7

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);
}
于 2013-07-04T12:59:53.103 回答
1

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

var loadData = filenames.ToArray();
loadData[5]="hello.txt";
于 2013-07-04T13:06:13.590 回答
0

留个柜台。

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

这会将第一个项目分配filenamesloadData[1]

于 2013-07-04T12:57:49.760 回答
0

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

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

这会给你

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

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

于 2013-07-04T13:01:35.903 回答
0

这很容易。你可以使用这个。

loadData.Add(1,"fileName1");

或者你把这条线放在循环里面。

于 2013-07-04T13:03:56.753 回答
0

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

int id = 1;
var loadData = filenames.ToDictionary(x => id++);
于 2013-07-04T13:04:02.547 回答
0

另一种方法。

var loadData = fileNames
              .Select((fn,index)=> new {key = index, value = fn})
              .ToDictionary(x=> x.key, x=> x.value);
于 2013-07-04T13:09:56.767 回答