-2

我有一个包含 12 列的数据表。其中 5 个共同构成主键。我想使用 linq 查找重复的行,并在所有这些重复记录的列中分配值“DUP”,(为此目的保留最后一列)。请帮忙..谢谢。

4

2 回答 2

1

这是一个使用 Linq 的完整示例:

(我仅使用 4 列完成了示例,根据您的情况进行调整应该很简单)

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("col1", typeof(int)));
dt.Columns.Add(new DataColumn("col2", typeof(int)));
dt.Columns.Add(new DataColumn("col3", typeof(int)));
dt.Columns.Add(new DataColumn("col4", typeof(bool)));

var distinctRows = from r in dt.AsEnumerable()
                   group r by new { col1=r["col1"], col2=r["col2"], col3=r["col3"]}
                   into g
                   select g.First();

foreach (var distinctRow in distinctRows)
{
   distinctRow["col4"] = "dup";
}

如果您更喜欢方法链语法:

var distinctRows = dt.AsEnumerable().GroupBy(r => new {col1 = r["col1"], col2 = r["col2"], col3 = r["col3"]})
                                    .Select(g => g.First());
于 2013-08-25T14:47:42.267 回答
-1

如何根据主键获取不同的行,然后遍历 DataTable 为非不同记录设置 DUP?

要获得不同的记录,试试这个

DataView view = new DataView(yourtable);
DataTable distinctTable = view.ToTable(true, "Column1", "Column2" ...);

让我知道这个解决方案是否适合您。

于 2013-08-25T14:01:27.503 回答