我使用 -
迭代DataTable的行DataTable dt = getDataTableFromSomeWhere();
DataRow row = null;
//for loop
row = dt.Rows[i];
如何使用列的名称获取第i行的列的值? 我可以使用dt.Columns [j]迭代列,但这不是我想要的。
答案 0 :(得分:3)
只需使用indexer taking a string parameter:
object value = row["ColumnName"];
编辑:假设已经以适当的类型提取了值,我通常只会转换为您想要的CLR类型:
int someIntegerValue = (int) row["ColumnName"];
有时您可能需要两个级别的投射(一个用于拆箱,另一个用于执行实际值转换),但这取决于您的需求。
我建议反对转换为字符串表示然后解析它,除非你真的没有其他选择。过多的字符串转换不仅会损害性能(通常不相关),而且会导致类型选择邋。。
答案 1 :(得分:0)
string name = (string) row["ColumnName"];
或
int i = Convert.ToInt32( row["ColumnName"]);
按名称引用的速度稍微慢一些,但更具可读性。