0

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

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

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

谢谢你的时间!

4

1 回答 1

0

像下面这样的东西会起作用(没有语法检查,抱歉):

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

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

于 2013-04-25T23:45:48.203 回答