我有一个结构有点像这样的数据表,
Week_Number Col_A Col_B Col_C Col_D Col_E
----------------------------------------------
1 10 20 30 40 50
2 20 30 40 50 60
3 30 40 50 60 70
4 40 50 60 70 80
5 50 60 70 80 90
这是我在c#中的代码,用于返回数据表的值。
foreach (DataRow dr in dt.Rows)
{
foreach (DataColumn dc in dr.Table.Columns)
{
lst.Add(dr[dc].ToString());
}
}
但它会逐行返回值(例如,Row [0] - 1,10,20,30,40,50,Row [1],..)而我希望获得列的值(例如,Col [0] - 1,2,3,4,5,Col [1],...)
任何帮助将不胜感激。
感谢。
答案 0 :(得分:1)
只需更改循环的顺序,外部循环应位于Columns
上,内循环应位于以下行:
foreach (DataColumn dc in dt.Columns)
{
foreach (DataRow dr in dt.Rows)
{
lst.Add(dr[dc].ToString());
}
}
您最终会得到一个列表,其中包含第一列和第二列以及之后的所有值。
答案 1 :(得分:0)
您实际上想要DataRow对象中的列中的数据:
dr.field<int>("Week_Number");
dr["Week_Number"].ToString();
答案 2 :(得分:0)
您可以获得单个列的值,如下所示:
var valueOfColumn = dtTable.Rows[rowIndex][ColumnIndex];
如果你想要所有列,你可以通过循环来做到这一点:
foreach (DataRow dtRow in dtTable.Rows)
{
foreach(DataColumn dc in dtTable.Columns)
{
var field1 = dtRow[dc].ToString();
}
}