我正在编写一个程序,它需要读取一组记录,这些记录描述了我需要与之通信的设备的寄存器映射。每条记录都有一些字段来描述每个寄存器的属性。
我真的不需要在我的 VB 或 C# 程序中编辑或修改数据,尽管我希望能够在网格上显示数据。我想将数据存储在 CSV 文件或 XML 文件中。我需要让用户能够离线编辑数据,最好是在 excel 中。
我正在考虑使用 DataTable 或“注册”对象的集合(我将定义)。
我设计了一个 DataTable 原型,发现我可以使用内置方法轻松读取/写入 XML,并且可以轻松绑定到 DataGridView。即使我定义了一个唯一的主键列,我也无法找到一种方法来在不使用返回行集合的查询的情况下检索单个寄存器上的信息。从列中获取值的语法也很复杂,尽管我可能在这两个方面都遗漏了一些东西。
我很想使用可以通过唯一键访问的“注册”对象集合。预先编码会多一点,但总体上似乎是一个更清晰的解决方案。我应该仍然可以在需要时使用 LINQ to dataset 来查询寄存器的子集,但也可以使用键值获取单个字段,例如:Registers(keyValue).fieldName。
哪个是解决问题的更干净的方法?
有没有办法在不需要自定义代码的情况下将 XML 读/写到集合中?
这可以使用 String 作为键来完成吗?
更新:听起来共识是针对寄存器对象的集合。我感觉合理。我倾向于那样,因为没有人指出任何可以简化单行访问的 DataTable 功能,看起来 Collection 显然是要走的路。感谢那些称重的人。
我倾向于不使用数据集。使用对象和集合会更好。您的代码将更具可维护性/可读性、可组合性、可测试性和可重用性。
鉴于您可以对数据集执行查询以返回特定行,您可能会发现将行转换为对象的 LINQ 查询可能就是您需要的所有自定义代码。
Dictionary<string, Register>如果您有大量项目(比如大于 1000),则使用for 查找是一个好主意。否则一个简单的 LINQ 查询应该没问题。
| 归档时间: |
|
| 查看次数: |
5897 次 |
| 最近记录: |