我搜索了几个线程,似乎无法找到C#解决方案。我在C#中有一个字符串列表和一个数据表。我需要能够遍历我的数据表的行,然后遍历我的列表以获取标题值(row[0]
)并使用它来分配给变量。
这是我到目前为止所做的:
private void setInformation(DataTable dt, List<string> text)
{
foreach(DataRow row in dt.Rows)
{
if (dt.Rows.IndexOf(row) != 0)
{
for (int i = 0; i <= text.Count; i++)
{
string s;
string ValueNeeded;
s = text[i];
ValueNeeded = dt.Columns.IndexOf(text).ToString();
//needs to be the current dt rows value for the header /
//row(0) with that string identifier
//in VB its something like
//DT.Rows(0).Item(text).ToString
}
}
}
}
我所拥有的只是第一行的字符串值;当我遍历DT时,我需要通过利用第一行值来获得&#34;单元格的值。我每次都需要当前的单元格。
答案 0 :(得分:1)
您可以通过引用行[index]和列名字符串
来获取任何单元格的值string xyz= dt.Rows[0]["columnName"].ToString();
答案 1 :(得分:1)
好的,假设List<string> text
参数包含DataTable中第一行(而不是列名)的值,并且您希望获得每行中相应的单元格,像这样的东西应该工作(没有测试过)
private void setInformation(DataTable dt, List<string> text)
{
var cache = new Dictionary<string, int>(); //cache column numbers
foreach(var entry in text) cache[entry] = getColumnNumberByValue(dt, entry);
for(int i=1; i < dt.Rows.Count; i++)
{
foreach(var entry in text)
{
var columnIndex = cache[entry];
if(columnIndex != -1)
{
var valueNeeded = dt.Rows[i][columnIndex].ToString();
}
}
}
}
private int getColumnNumberByValue(DataTable dataTable, string text)
{
for(int i=0; i < dataTable.Columns.Count; i++)
{
if(dataTable.Rows[0][i].ToString() == text) return i;
}
return -1;
}