将一个DataTable分成多个
Dividing one DataTable into many
我正在尝试将行从一个 DataTable
传输到许多其他动态生成的 DataTable
。父级 DataTable
包含以下格式的数据:
ID Name Type
--------------
1 ABC 0
1 PQR 2
2 XYZ 8
2 QWE 7
3 IOP 6
我希望具有相同 ID
的行必须在一个 table 中。例如,上面的场景将生成 3 tables。第一个包含 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
包含 table 具有单个未命名列的空行。出了什么问题?
试试这个。
IEnumerable<DataTable> tables =
table.AsEnumerable().GroupBy(t => t.Field<int>("ID")).Select(t => t.CopyToDataTable());
我正在尝试将行从一个 DataTable
传输到许多其他动态生成的 DataTable
。父级 DataTable
包含以下格式的数据:
ID Name Type
--------------
1 ABC 0
1 PQR 2
2 XYZ 8
2 QWE 7
3 IOP 6
我希望具有相同 ID
的行必须在一个 table 中。例如,上面的场景将生成 3 tables。第一个包含 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
包含 table 具有单个未命名列的空行。出了什么问题?
试试这个。
IEnumerable<DataTable> tables =
table.AsEnumerable().GroupBy(t => t.Field<int>("ID")).Select(t => t.CopyToDataTable());