我有一個帶有3列(名,姓,年齡)的數據表,我想瀏覽它並查找具有相同姓氏和名字的行,並將其替換爲一行將具有相同的名字和姓氏。至於年齡欄,我想把所有年齡段放在一個單元格中,並用'|'分隔它們。要麼 ';'。如何合併具有類似數據的行
前:
約翰#李四#24
約翰#李四#35
後:
約翰#李四#24 | 35
我有一個帶有3列(名,姓,年齡)的數據表,我想瀏覽它並查找具有相同姓氏和名字的行,並將其替換爲一行將具有相同的名字和姓氏。至於年齡欄,我想把所有年齡段放在一個單元格中,並用'|'分隔它們。要麼 ';'。如何合併具有類似數據的行
前:
約翰#李四#24
約翰#李四#35
後:
約翰#李四#24 | 35
您可以使用LINQ和System.Data.DataSetExtensions.dll
程序集中的擴展如DataRowExtensions來對行進行分組並加入您想要的值:
var dt=new DataTable();
dt.Columns.Add("A", typeof (string));
dt.Columns.Add("B", typeof (string));
dt.Columns.Add("C", typeof (int));
dt.Rows.Add("John", "Doe", 23);
dt.Rows.Add("John", "Doe", 24);
dt.Rows.Add("John", "Doe", 25);
var result = from row in dt.AsEnumerable()
group row by new {A=row.Field<string>("A"), B=row.Field<string>("B")} into grp
select new
{
CustomerName = grp.Key,
Items = String.Join(",",grp.Select(r=>r.Field<int>("C")))
};
foreach (var t in result)
Console.WriteLine(t.CustomerName + " " + t.Items);
關鍵是要認識到,你問的是如何對數據進行分組,然後用比數以外的東西()或總和()
你會發現這麼多的問題彙總值列那要求如何分組DataTable行,例如。 this one,你可以使用它作爲參考,使更復雜的分組
謝謝你@Panagiotis !!! – Zack09
老實說,我很笨,我想把數據錶轉換成列表。但我不知道這是否是最好的方法 – Zack09