【问题标题】:Can I provide a datable row with a name?我可以提供一个带名称的数据行吗?
【发布时间】:2009-06-05 15:56:56
【问题描述】:

是否可以像使用列一样提供具有字符串形式名称的数据表行?我希望能够通过名称而不是索引来引用行。

编辑: 我的错。我在 C# 中工作。我应该这么说的。

我正在使用统计分析进行市场相关性研究。我想将相关研究的输出存储在数据表中。每列都是包含在研究中的市场。行的名称与列的名称相同,顺序相同。所以我会将黄金市场和铜市场之间相关性研究的输出放在“黄金”列和“铜”行的交叉点(以及“铜”列和“黄金”行的交叉点")。

为了在我的代码的其他地方轻松引用这些研究的输出,我希望能够按市场名称而不是索引来引用行。

谢谢!

【问题讨论】:

  • 我们需要更多关于你想要做什么的信息。否则,默认答案是 SELECT * FROM MyTable WHERE Name = ''
  • 你不能只通过主键引用行吗?它(应该)是独一无二的。我知道该机制与引用行不同,但它仍应提供正确的行。
  • 另外,多一点信息会有所帮助。你指的是System.Data中的DataTable类吗?

标签: c# .net ado.net datatable rows


【解决方案1】:

我不知道您使用的是什么数据库,但我认为没有办法做到这一点。在 Oracle 中有一种类似的东西,称为 rowid(每行唯一的 id,独立于主键),但我不确定其他数据库是否有相同的东西。

【讨论】:

    【解决方案2】:

    像枚举这样简单的行/列名称会有所帮助吗?

    【讨论】:

      【解决方案3】:

      我会在这里冒险并建议您使用的表结构可能不是存储结果的最佳结构。一个原因是它不容易扩展 - 如果添加/减去记录相关性的市场,则必须物理修改表。

      我认为将数据保存为更好的结构:

      ID | Market1 | Market2 | Correlation
      ------------------------------------
       1 | Gold    |  Silver |  0.8
       2 | Gold    |  Bronze |  0.5
       3 | Silver  |  Bronze |  0.1
       etc
      
       With a Primary Key (PK) on (Market1, Market2)
      

      这将处理您的所有数据,并允许您在未来轻松添加市场。缺点是您必须确保同一数据没有多个条目,即“Gold - Silver”和“Silver - Gold”

      使用这种结构,您只需向表格询问“Gold”和“Silver”的结果。

      但是,生成所有市场的表格结果会有点复杂,我会把它留给另一个 SO 问题:D

      【讨论】:

        猜你喜欢
        • 2010-12-04
        • 1970-01-01
        • 1970-01-01
        • 2013-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-04
        • 1970-01-01
        相关资源
        最近更新 更多