我有一個Data table 如下所示:

我現在需要將 ID 相同的列進行合并,合并效果如下:
請問,如何用C#實作?
uj5u.com熱心網友回復:
https://blog.csdn.net/hhongjia/article/details/95208459uj5u.com熱心網友回復:
您好,我需要做的事對同一張表的合并,這需要怎么做呢?
uj5u.com熱心網友回復:
都一樣的,好好想一下
uj5u.com熱心網友回復:
如果是SQL語言你會嗎?其實一樣的,利用DataTable的GroupBy進行分組,在加上簡單的處理邏輯即可
uj5u.com熱心網友回復:
說錯了,不能利用GroupBy。(1)創建一個符合你合并后的DataTable,
(2)回圈你原來的DataTable,然后插入到新的DataTable里面
但是有個問題,你確定你合并后的結果是DataTable嗎?因為相同項有多少你是不知道的,萬一有很多項都相同,你的DataTable欄位要動態變化的。
利于List<T>的方式不是更好嗎
uj5u.com熱心網友回復:
應該能實作你要的功能,但效率不高,有什么好的想法一起交流一下
//獲取ID分組的DataTable:[dt_ID]
select ID from YouTable group by ID
dt_ID.PrimaryKey = new DataColumn[] { dt_ID.Columns["ID"] };
for (int i=0; i < dt_ID.Rows.count; i++)
{
//創建臨時表 [dt_Temp]
DataTable dt_Temp = new DataTable()
dt_Temp.Columns.Add("ID", typeof(int));
string fieldValues = dt_ID.ID;
//獲取相同ID的記錄集 : [dt]
select Training, Duration from YouTable where ID = dt_ID.ID
for (int j=0; j < dt.Rows.count; j++)
{
string fieldName1 = "Training" + j ;
string fieldName2 = "Duration" + j
dt_Temp.Columns.Add(fieldName1, typeof(string));
dt_Temp.Columns.Add(fieldName2, typeof(string));
fieldValues += "," + dtBind.Rows[j]["Training"].ToString() + "," + dtBind.Rows[j]["Duration"].ToString()
}
//添加行,資料填充
string[] str_Array = fieldValue.Split(',');
dt_Temp.Rows.Add(str_Array);
dt_ID.Merge(dt_Temp, false, MissingSchemaAction.Add); //合并至主體表,相同欄位合并
}
uj5u.com熱心網友回復:
不好意思,忘記說了,上面是個思路,不是完整代碼,需要完善
uj5u.com熱心網友回復:
說錯了,不能利用GroupBy。
(1)創建一個符合你合并后的DataTable,
(2)回圈你原來的DataTable,然后插入到新的DataTable里面
但是有個問題,你確定你合并后的結果是DataTable嗎?因為相同項有多少你是不知道的,萬一有很多項都相同,你的DataTable欄位要動態變化的。
利于List<T>的方式不是更好嗎
List<T>怎么實作呀,請指導一下,謝謝。
uj5u.com熱心網友回復:
要么你用SQL 可以搜索一下行轉列要么你在后端用DataTable來構造一個新的DataTable。
uj5u.com熱心網友回復:
的回復:]
說錯了,不能利用GroupBy。
(1)創建一個符合你合并后的DataTable,
(2)回圈你原來的DataTable,然后插入到新的DataTable里面
但是有個問題,你確定你合并后的結果是DataTable嗎?因為相同項有多少你是不知道的,萬一有很多項都相同,你的DataTable欄位要動態變化的。
利于List<T>的方式不是更好嗎
List<T>怎么實作呀,請指導一下,謝謝。
如果你弄清楚到底是界面上這樣顯示,還是資料源必須以這種格式的資料?如果界面上展示嵌套物體類其實比DataTable好操作些
uj5u.com熱心網友回復:
先創建 列,然后在 你創建好的那個 datatable 用 dt.NewRows 函式,即可。DataTable 這個物件有專門處理 列 和 行的 的方法。
如果實在不知道,在叫我,我給你寫個demo
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/127359.html
標籤:C#
下一篇:哪位大哥幫幫忙寫出這個代碼
