dataset中数据忽略一列数据之后去重,并把去重复项之前的列一列数据进行合并
DataTable table = new DataTable();
table.Columns.Add("Column1", typeof(string));
table.Columns.Add("Column2", typeof(string));
table.Columns.Add("Column3", typeof(string));
table.Columns.Add("Column4", typeof(string));
table.Rows.Add("Value1", "Value2", "Value3","11");
table.Rows.Add("Value1", "Value2_Diff", "Value3","11"); // 故意改变Column2的值以制造差异
table.Rows.Add("Value1", "Value2", "Value3_Diff","11"); // 故意改变Column3的值以制造差异
以上为准备工作
// 假设我们想忽略Column2的差异
var uniqueRows = rows.GroupBy(row => new { Column1 = row["Column1"], Column3 = row["Column3"] })
.Select(g => g.First())
.ToArray();
//通过groupby把需要重复的去掉,下面把重复项的某一列进行合并
for (int i = 0; i < uniqueRows.Length; i++)
{
string tempStr = string.Empty;
DataRow row = table.NewRow();
for (int j = 0; j < rows.Length; j++)
{
if (rows[j]["Column1"] == uniqueRows[i]["Column1"] && rows[j]["Column3"] == uniqueRows[i]["Column3"])
{
tempStr += rows[j]["Column3"].ToString() + "|";
}
}
row["Column1"] = uniqueRows[i]["Column1"];
row["Column3"] = tempStr.Trim().Remove(tempStr.Length - 1);
row["Column4"] = uniqueRows[i]["Column4"];
table.Rows.Add(row);//懒得创建新表了,直接放到旧表中。
}