毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> net技术 >> 正文

将一个DataTable拆分为N个DataTable

更新时间:2013-5-26:  来源:毕业论文

将一个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", "文字

[1] [2] 下一页

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。