数据表,使用linq
本文关键字:linq 使用 数据表 | 更新日期: 2023-09-27 18:29:01
我有一个包含12列的数据表。它们中的5个共同构成主键。我想使用linq和在所有重复记录的列中分配值'DUP'来查找重复的行,(最后一列保留用于此目的)。请帮忙。。非常感谢。
这里是一个使用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());
根据主键获取不同的行,然后在DataTable中迭代以设置非不同记录的DUP怎么样?
要获得不同的记录,请尝试此
DataView view = new DataView(yourtable);
DataTable distinctTable = view.ToTable(true, "Column1", "Column2" ...);
让我知道这个解决方案是否适合你。