将字典分配给键值

本文关键字:键值 分配 字典 | 更新日期: 2023-09-27 18:21:13

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"一样访问;

将字典分配给键值

首先:您正在使用无法正常工作的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);
}

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

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

保留一个计数器。

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

这会将filenames中的第一项分配给loadData[1]

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

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

这会给你

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

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

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

loadData.Add(1,"fileName1");

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

另一种方法。

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

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

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