我有一个DataTable dtStudent,它有像stuid,stuname,stuclass等列,就像有那么多列,假设我有10行。我们不知道数据表中会有多少列可能会有所不同取决于功能。 现在我如何将数据表转换为字符串,字符串,字符串,字符串的列表,就像没有使用数据表中的类列表一样未知列。
请帮帮我。
答案 0 :(得分:2)
您需要遍历DataTable
行并收集数据
您可以使用DataTable.Columns
获取列名并使用它们来获取行单元格。
List<string[]> result = new List<string[]>();
foreach (DataRow row in rightsTable.Rows)
{
string[] cells = new string[rightsTable.Columns.Count];
for (int i = 0; i < rightsTable.Columns.Count; i++)
{
cells[i] = row[rightsTable.Columns[i].ColumnName].ToString();
}
result.Add(cells);
}
<强>更新强>
现在好了。我忘记了ItemArray
财产。它只返回存储在一行中的object
数组。你只需要对它执行ToString()
你可以使用这个,因为它更方便快捷。
List<string[]> result = new List<string[]>();
foreach (DataRow row in dt.Rows)
{
list.Add(row.ItemArray.Select(x => x.ToString()).ToArray());
}
甚至更短的使用LINQ:
List<string[]> result = dt.Rows
.Cast<DataRow>()
.Select(row => row.ItemArray
.Select(x => x.ToString())
.ToArray())
.ToList();