将一个DataTable拆分为N个DataTable
我有一个表,大概有1000多行....结构如下
C# code?123456789 ID | 分组 | 文字 | 信息 1 | 组1 | 文字1 | 信息1 2 | 组2 | 文字2 | 信息2 3 | 组1 | 文字3 | 信息3 4 | 组3 | 文字4 | 信息4 5 | 组2 | 文字5 | 信息5 6 | 组1 | 文字6 | 信息6 .....
我想将其拆分为N个DataTabel, TableName 为分组的内容如:"组1"
拆分后ID可以忽略.仅保留"文字"字段和"信息"字段
拆分后表1 表名为 "组1"
C# code?12345 文字 | 信息 文字1 | 信息1 文字3 | 信息3 文字6 | 信息6
拆分后表2 表名为 "组2"
C# code?1234 文字 | 信息 文字2 | 信息2 文字5 | 信息5
拆分后表3 表名为 "组3"
C# code?123 文字 | 信息 文字4 | 信息2
.....
请注意,不是使用SQL语句!而是在WinForm中.需要将所得到的表集合到一个DataSet中....
各位能想出一个高效的办法么?
linq
var data = datatable.Rows.Cast<DataRow>().GroupBy(x => x["分组"]); DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("分组");
dt.Columns.Add("名字");
dt.Columns.Add("信息");
dt.Rows.Add(1, "组1", "文字1", "信息1");
dt.Rows.Add(2, "组2", "文字2", "信息2");
dt.Rows.Add(3, "组1", "文字3", "信息3");
dt.Rows.Add(4, "组3", "文字4", "信息4");
dt.Rows.Add(5, "组2", "文字5", "信息5");
dt.Rows.Add(6, "组1", "文字6", "信息6");
DataSet ds = new DataSet();
var groupNames = dt.Rows.Cast<DataRow>().Select(x => x["分组"].ToString()).Distinct().ToList();
groupNames.ForEach(groupName =>
{
dt.DefaultView.RowFilter = string.Format("分组='{0}'", groupName);
DataTable newTable = dt.DefaultView.ToTable(groupName, false, "名字", "信息");
ds.Tables.Add(newTable);
});
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("分组");
dt.Columns.Add("名字");
dt.Columns.Add("信息");
dt.Rows.Add(1, "组1", "文字1", "信息1");
dt.Rows.Add(2, "组2", "文字2", "信息2");
dt.Rows.Add(3, "组1", "文字3", "信息3");
dt.Rows.Add(4, "组3", "文字4", "信息4");
dt.Rows.Add(5, "组2", "文字5", "信息5");
dt.Rows.Add(6, "组1", "文字