【问题标题】:Nested Dictionaries or DataTable嵌套字典或数据表
【发布时间】:2015-01-12 18:15:55
【问题描述】:

拥有一个 3“列”字典的最聪明的方法是什么。我需要一个 ID、姓名和佣金。最好将其放入 DataTable 中吗?还是太笨重了?我有名字,我只想去数据库一次得到ID和佣金。也就是说,我将对 Name 值的存在进行大量检查。显然,如果它不存在,我需要获取数据库的 ID 和佣金,并将记录添加到集合中。那么数据表呢?嵌套字典?其他?大家觉得呢?

谢谢!

【问题讨论】:

  • 为什么字典需要嵌套?你只需要一本字典。为什么要使用DataTable 根据键查找值?这根本不是 DataTable 的设计目的,它正是 Dictionary 的设计目的。
  • 如果您只需要按名称查找它,那么以它为键的字典似乎很合适。
  • 以 Name 为键的字典并定义一个类或结构来保存 Id/Commission?如果你真的不愿意创建一个新的类或结构,你也可以存储一个元组。
  • 啊,呃,这就是我需要的。谢谢@BradD

标签: c# dictionary datatable nested


【解决方案1】:
public class Element
{
    public string ID {get; set;}
    public string Name {get; set;}
    public string Commission {get; set;}
}

var data = new Dictionary<string,Element>();
data.Add(e.ID,e); //assuming e is of type Element and defined.

【讨论】:

  • 我想我真的不需要 Name 字段,因为它是关键,但我明白了。谢谢!
  • 根据数据库,通常名称字段不限于唯一。 Dictionary 要求所有键都是唯一的,因此 ID 可能是最佳选择。
  • 哦,好吧,我明白了。我正在从只提供名称的 excel 文件中读取,所以我想我需要使用它作为键。我一直假设这个名字是独一无二的。但你是对的,我需要确保这是一个安全的假设,否则会有更多问题:-p 谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-11-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2021-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多