C# 用PDFoutline填充词典

C# 用PDFoutline填充词典,c#,arrays,pdfsharp,C#,Arrays,Pdfsharp,因此,我正试图编写一个程序,将已有的PDF列表中的PDF组合起来。到目前为止,我已经完成了大部分工作,但我有一个问题,特别是一个步骤。如果这不明显的话,我也在用c#写这篇文章 我有一个字符串数组,其中包含一个类别名称,对于每个类别名称,我想创建一个PdfOutline类型的变量,该变量被初始化为null,我可以在程序中稍后进行迭代 我自己也试过研究这个问题,似乎字典是解决这个问题的方法,但我真的不知道该怎么做。首先,制作字典是正确的方法吗?其次,我需要帮助实现 谢谢你的时间 类似于以下内容的操作

因此,我正试图编写一个程序,将已有的PDF列表中的PDF组合起来。到目前为止,我已经完成了大部分工作,但我有一个问题,特别是一个步骤。如果这不明显的话,我也在用c#写这篇文章

我有一个字符串数组,其中包含一个类别名称,对于每个类别名称,我想创建一个PdfOutline类型的变量,该变量被初始化为null,我可以在程序中稍后进行迭代

我自己也试过研究这个问题,似乎字典是解决这个问题的方法,但我真的不知道该怎么做。首先,制作字典是正确的方法吗?其次,我需要帮助实现


谢谢你的时间

类似于以下内容的操作将起作用(抱歉,没有语法检查):

//这要求类别数组没有重复项。
公共词典构建MyCollectionOfOutline(字符串[]类别)
{
返回categories.ToDictionary(cat=>newkeyvaluepair(cat,null));
}
如果您这样做,那么您可以在以后使用结果(尽管使用函数这样做很愚蠢,这只是我向您展示如何使用它的方式):

公共PdfOutline GetOutlineByCategory(字典大纲、字符串类别)
{
//如果该类别实际上不在词典中,这将是一个问题。
退货提纲[类别];
}
你是否应该使用
字典
而不是其他东西,比如
列表
,取决于1)你将拥有多少本字典,2)你将如何访问它们。例如,如果您有10000个,并且您需要按类别名称随机重复地查找它们,那么字典是正确的方法,因为它对内容进行散列以更快地搜索(想想数据库表中的索引)。然而,如果你有10000个,但只需要找到其中的2个,反之亦然,只有10个,那么建立快速搜索能力的开销就被浪费了。所以Dictionary vs other最好的答案是这样一个问题:“如果这是在数据库表中,您会为它编制索引吗?”

// This requires the array of Categories to have no duplicates.
public Dictionary<string, PdfOutline> BuildUpMyCollectionOfOutlines(string[] categories)
{
    return categories.ToDictionary(cat => new KeyValuePair<string, PdfOutline>(cat, null));
}
public PdfOutline GetOutlineByCategory(Dictionary<string, PdfOutline> outlines, string category)
{
    // This will be problematic if the category isn't actually in the dictionary.
    return outlines[category];
}