我有一个带有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