将DataTable按某列分组,效果如下图
测试数据
核心代码如下
测试数据
private DataTable InitData()
{
DataTable dataTable = new DataTable();
dataTable.Columns.Add(new DataColumn("id"));
dataTable.Columns.Add(new DataColumn("QQ"));
dataTable.Columns.Add(new DataColumn("name"));
dataTable.Columns.Add(new DataColumn("area"));
dataTable.Columns.Add(new DataColumn("Remarks"));
DataRow dr1 = dataTable.NewRow();
dr1["id"] = 1;
dr1["QQ"] = "78630559";
dr1["name"] = "罗分明";
dr1["area"] = "广东";
dr1["Remarks"] = "www.luofenming.com";
dataTable.Rows.Add(dr1);
DataRow dr2 = dataTable.NewRow();
dr2["id"] = 2;
dr2["QQ"] = "2334160";
dr2["name"] = "lqwvje";
dr2["area"] = "江西";
dr2["Remarks"] = "www.995w.com";
dataTable.Rows.Add(dr2);
DataRow dr3 = dataTable.NewRow();
dr3["id"] = 3;
dr3["QQ"] = "888888";
dr3["name"] = "8888";
dr3["area"] = "广东";
dr3["Remarks"] = "8888";
dataTable.Rows.Add(dr3);
DataRow dr4 = dataTable.NewRow();
dr4["id"] = 4;
dr4["QQ"] = "12345";
dr4["name"] = "123";
dr4["area"] = "广东";
dr4["Remarks"] = "123";
dataTable.Rows.Add(dr4);
DataRow dr5 = dataTable.NewRow();
dr5["id"] = 5;
dr5["QQ"] = "9999";
dr5["name"] = "999";
dr5["area"] = "江西";
dr5["Remarks"] = "999";
dataTable.Rows.Add(dr5);
DataRow dr6 = dataTable.NewRow();
dr6["id"] = 6;
dr6["QQ"] = "5555";
dr6["name"] = "555";
dr6["area"] = "浙江";
dr6["Remarks"] = "55";
dataTable.Rows.Add(dr6);
return dataTable;
}
核心代码如下
DataTable dt = InitData();
IEnumerable<IGrouping<string, DataRow>> result = dt.Rows.Cast<DataRow>().GroupBy<DataRow, string>(dr => dr["area"].ToString());
if (result != null && result.Count() > 0)
{
foreach (IGrouping<string, DataRow> rows in result)
{
DataTable dataTable = rows.ToArray().CopyToDataTable();
}
}