从DataTables初始化某些值时我们应该使用什么

时间:2010-08-03 06:13:59

标签: c# coding-style scalability

当您想要从datatable初始化类属性时,应该更合适。

即。

name=dt.Rows[0][0] or name=dt.Rows[0]["Name"]

哪种方法更具可扩展性,易于处理。 目前我使用第二种方法,但感觉就像我使用索引而不是名称,我只需要更改存储过程而不是UI。

但是会损害代码的可读性。那我该怎么办

3 个答案:

答案 0 :(得分:1)

一种选择是介于两者之间:

private const int NameColumn = 0;
...
name = dt.Rows[0][NameColumn];

如果列排序/定义发生更改,那么一个位置可以更改,但在访问时也提供可读代码。我不确定它是否同时解决了必须同时更改UI代码和存储过程的问题:如果您的SP正在有效地更改其公共界面,您应该期望更改UI码。但是,这种方法可以减少这种变化的痛苦,并且不会使用魔法值乱丢你的代码。

(您可能还想考虑强类型数据集...或转移到非DataTable数据解决方案,例如实体框架。它可能不适合您的情况,但值得考虑。)

答案 1 :(得分:1)

列名称,因为它使它更具可读性。如果您要更改存储过程,使用列索引将无助于您可能正在更改列的数量或顺序。

答案 2 :(得分:0)

使用数字索引比重复使用字符串索引更快。在遍历表行之前,您可以在运行时计算一次数字索引:

int indexName = dt.Columns.IndexOf("Name")