C# 为键值分配字典 Dictionary loadData=newdictionary(); //文件包含一个文件名列表,例如5个文件名 foreach(文件名中的var文件) { //我想这样分配 loadData[id]=文件; }
如何在C语言中分配C# 为键值分配字典 Dictionary loadData=newdictionary(); //文件包含一个文件名列表,例如5个文件名 foreach(文件名中的var文件) { //我想这样分配 loadData[id]=文件; },c#,asp.net,C#,Asp.net,如何在C语言中分配loadData(key,value),以便像loadData[5]=“hello.txt”那样访问 保留一个计数器 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 lik
loadData(key,value)
,以便像loadData[5]=“hello.txt”
那样访问 保留一个计数器
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;
}
这会首先将
文件名中的第一项分配给加载数据[1]
:您使用的是新字典()
,无法正常工作。改用newdictionary()
第二:id
来自哪里?如果它只是一个计数器,您可以执行以下操作:
int i = 0;
foreach (var file in filenames) {
++i;
loadData[i] = file;
}
Dictionary loadData=newdictionary();
int id=0;
foreach(文件名中的字符串文件)
{
loadData.Add(id++,文件);
}
我假设通过ID
,它不是文件中的值,而是循环中项目的索引
Dictionary<int, String> loadData = new Dictionary<int, String>();
int id = 0;
foreach (string file in filenames)
{
loadData.Add(id++, file);
}
这会给你
filenames.ForEach(x => loadData.Add(loadData.Count, x));
如果我理解正确,这就是你想要的。或者您是否有一个单独的键
,并希望通过某种索引(如列表)访问词典?这非常简单。
你可以用这个
loadData.Add(1,“fileName1”)代码>
或者将这一行放在循环中。使用ToDictionary()
扩展方法
Key Value
0 First filename
1 Second filename
2 Third filename
etc...
如果id
只是一个计数器,您可以使用数组,仍然可以写入loadData[5]=“hello.txt”代码>
另一种方法
var loadData = filenames.ToArray();
loadData[5]="hello.txt";
我认为你不能通过索引访问字典的元素,你可以。C#不是Java。[]=
和.Add
之间的区别在于,如果键已经存在,后者会引发异常,而前者会覆盖任何现有值。我已经尝试过它,但在响应时,我得到的错误类型是“System.Collections.Generic.Dictionary`2”[[System.Int32,mscorlib,版本=4.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089],[System.String,mscorlib,版本=4.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089]]字典的序列化/反序列化不支持,键必须是字符串或对象。@Mazher这可能是因为您使用非泛型构造函数初始化了字典。我使用了正确的字典更新了答案。我使用了如您所述的方法,但仍然收到相同的错误“键必须是字符串或对象”,我的id不是计数器变量我从Model派生它当我使用dictionary作为new dictionary()时,我得到了正确的响应;为什么是这样!在这种情况下,您不需要指定值,因为默认情况下它是可枚举的类型
var loadData = filenames.ToArray();
loadData[5]="hello.txt";
var loadData = fileNames
.Select((fn,index)=> new {key = index, value = fn})
.ToDictionary(x=> x.key, x=> x.value);