将一个DataTable分成多个

时间:2015-09-11 15:29:09

标签: c# .net sql-server datatable dataset

我正在尝试将行从一个DataTable传输到许多其他动态生成的DataTable。父DataTable包含以下格式的数据:

ID  Name  Type
--------------
 1   ABC     0
 1   PQR     2
 2   XYZ     8
 2   QWE     7
 3   IOP     6

我希望具有相同ID的行必须位于一个表中。例如,上面的场景将生成3个表。一个包含ID = 1行,第二个包含ID = 2行,第三个包含ID = 3行。我正在尝试使用以下代码实现此目的:

DataSet ResultantDataSet = new DataSet();
DataView dv = InputDataSet.Tables[0].DefaultView;
dv.Sort = "ID";
int newID = -1;
DataTable dt = null;
foreach(DataRow dr in dv.ToTable().Rows) {
    if (newID != int.Parse(dr["ID"].ToString())) {
        newID = int.Parse(dr["ID"].ToString());
        if (dt != null) ResultantDataSet.Tables.Add(dt);
        dt = new DataTable();
    } else {
        dt.ImportRow(dr);
    }
}

但问题是ResultantDataSet包含具有单个未命名列的空行的表。出了什么问题?

1 个答案:

答案 0 :(得分:3)

试试这个。

        IEnumerable<DataTable> tables =
            table.AsEnumerable().GroupBy(t => t.Field<int>("ID")).Select(t => t.CopyToDataTable());