Dictionary<int, List<string>>
本文关键字:gt lt string List int Dictionary | 更新日期: 2023-09-27 18:18:18
我有这样的东西:
Dictionary<int, List<string>> fileList = new Dictionary<int, List<string>>();
然后,我用一些变量填充它,例如:
fileList.Add(
counter,
new List<string> {
OFD.SafeFileName,
OFD.FileName,
VERSION, NAME , DATE ,
BOX , SERIAL_NUM, SERIES,
POINT , NOTE , VARIANT
}
);
其中counter
是一个变量,每次发生某事时增加+1,List<string>{XXX}
其中XXX
是保存一些文本的字符串变量。
我的问题是,如果counter == 1,我如何从列表中访问这些字符串?
您可以像平常一样访问字典和列表中的数据。记住,首先访问字典中的值,这将返回一个列表。然后,访问列表中的项目。
例如,您可以索引到字典,它返回一个列表,然后索引到列表:
------ Returns a list from the dictionary
| --- Returns an item from the list
| |
v v
fileList[0][0] // First item in the first list
fileList[1][0] // First item in the second list
fileList[1][1] // Second item in the second list
// etc.
FishBasketGordo解释了如何访问数据结构中的条目。我只在这里添加一些想法:
字典(基于哈希表)允许快速访问任意键。但是你的键是由一个计数器变量给出的(counter = 0,1,2,3,4…)。访问这类键的最快方法是简单地使用数组或列表的索引。因此,我将只使用List<>
而不是Dictionary<,>
。
此外,你的列表似乎不是列出匿名值,而是列出具有非常具体和不同含义的值。也就是说,日期和名字不一样。在这种情况下,我将创建一个类来存储这些值,并允许单独访问单个值。
public class FileInformation
{
public string SafeFileName { get; set; }
public string FileName { get; set; }
public decimal Version { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
...
}
现在你可以像这样创建一个列表:
var fileList = new List<FileInformation>();
fileList.Add(
new FileInformation {
SafeFileName = "MyDocument.txt",
FileName = "MyDocument.txt",
Version = 1.2,
...
}
}
你可以像这样访问信息
decimal version = fileList[5].Version;
如果键不是从0开始,只需减去起始值:
int firstKey = 100;
int requestedKey = 117;
decimal version = fileList[requestedKey - firstKey].Version;
Dictionary使用Indexer通过key访问它的值。
List<string> items = fileList[counter];
var str0 = items[0];
var str1 = items[1];
然后你可以用列表做任何事情。
Dictionary<int, List<string>> fileList = new Dictionary<int, List<string>>();
fileList.Add(101, new List<string> { "fijo", "Frigy" });
fileList.Add(102, new List<string> { "lijo", "liji" });
fileList.Add(103, new List<string> { "vimal", "vilma" });
for (int Key = 101; Key < 104; Key++)
{
for (int ListIndex = 0; ListIndex < fileList[Key].Count; ListIndex++)
{
Console.WriteLine(fileList[Key][ListIndex] as string);
}
}
您可以通过MyDic[Key][0]
访问List。在编辑列表时,不会有任何运行时错误,但是它会导致字典中存储不必要的值。所以更好:
- 将
MyDict[Key]
分配给新列表 - 编辑新列表然后
- 将新列表重新分配给
MyDict[Key]
,而不是编辑一个 使用列表作为值的字典中的特定变量。
代码例子:
List<string> lstr = new List<string(MyDict[Key]);
lstr[0] = "new Values";
lstr[1] = "new Value 2";
MyDict[Key] = lstr;