【发布时间】:2014-02-20 12:21:40
【问题描述】:
以下 C# 代码采用包含许多列和一个包含 2 个列名的数组的大型数据表。它将提供一个包含两行的新数据表,其中两个字段的重复行提供了员工编号和技能。 这太具体了,我需要提供任意数量的字段作为 groupby。 有人可以帮我吗?
string[] excelField = new string[0]; // contains a list of field name for uniquness
excelField[0] = "staff No";
excelField[1] = "skill";
DataTable dataTableDuplicateRows = new DataTable();
dataTableDuplicateRows.Clear();
dataTableDuplicateRows.Columns.Clear();
foreach (string fieldName in excelField)
{
dataTableDuplicateRows.Columns.Add(fieldName);
}
var duplicateValues = dataTableCheck.AsEnumerable()
.GroupBy(row => new { Field0 = row[excelField[0]], Field1 = row[excelField[1]] })
.Where(group => group.Count() > 1)
.Select(g => g.Key);
foreach (var duplicateValuesRow in duplicateValues)
{
dataTableDuplicateRows.Rows.Add(duplicateValuesRow.Field0, duplicateValuesRow.Field1);
}
【问题讨论】: