如何将数据表转换为列表,不包括对象列表或类列表

时间:2015-06-26 11:33:32

标签: asp.net

我有一个DataTable dtStudent,它有像stuid,stuname,stuclass等列,就像有那么多列,假设我有10行。我们不知道数据表中会有多少列可能会有所不同取决于功能。 现在我如何将数据表转换为字符串,字符串,字符串,字符串的列表,就像没有使用数据表中的类列表一样未知列。

请帮帮我。

1 个答案:

答案 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();