【问题标题】:Populating a Dictionary with PdfOutlines使用 PdfOutlines 填充字典
【发布时间】:2013-04-25 23:31:50
【问题描述】:

因此,我正在尝试编写一个程序,该程序将 PDF 从已经可用的 PDF 列表中组合起来。到目前为止,我已经完成了大部分工作,但我在某个步骤上遇到了问题。如果这不明显,我也在用 c# 写这个。

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

我自己尝试过调查,似乎字典是这样做的方法,但我不确定如何去做。首先,制作字典是正确的方法,其次我需要帮助。

感谢您的宝贵时间!

【问题讨论】:

    标签: c# arrays pdfsharp


    【解决方案1】:

    类似下面的东西会起作用(没有经过语法检查,抱歉):

    // 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];
    }
    

    您是否应该使用Dictionary&lt;string, PdfOutline&gt; 与其他东西(如List&lt;KeyValuePair&lt;string, PdfOutline&gt;&gt;)取决于1)您将拥有多少这些以及2)您将如何访问它们。例如,如果您有 10,000 个,并且您需要按类别名称随机重复地找到它们,那么 Dictionary 是正确的方法,因为它对事物进行哈希处理以加快搜索速度(想想数据库中表中的索引)。但是,如果您有 10,000 个但只需要找到其中的 2 个,反之亦然,只有 10 个,那么建立快速搜索功能的开销就被浪费了。因此,Dictionary vs other 的最佳答案是“如果这是在数据库表中,你会索引它吗?”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 2019-03-06
      • 1970-01-01
      相关资源
      最近更新 更多