c#.net 如何从数据集中删除重复的行
c#.net How can I removed duplicate rows from a DATASET
当我将数据写入 CSV 文件时,我需要从数据集中的表中删除包含列名称的重复行。有人知道我可以做到这一点的方法吗?
Column1 Column2 Column3
Value Value Value
Column1 Column2 Column3 <- dont need this again
Value Value Value
使用 LINQ。
var newtable = oldDS.Tables[0].AsEnumberable().Select(dr => dr).Distinct();
oldDS.Tables.Clear();
oldDS.Tables.Add(newtable.CopyToDataTable());
这个有效:
var distinctRows = ds.Tables[0].AsEnumerable().Distinct(DataRowComparer.Default);
var newDataTable = distinctRows.CopyToDataTable();
如果您只想使用字段的子集进行比较,您可以使用 morelinq 库(在 NuGet 上找到):
var distinctRows = ds.Tables[0].AsEnumerable().DistinctBy(x => new
{
Column1= x["column1"],
Column2 = x["column2"]
});
当我将数据写入 CSV 文件时,我需要从数据集中的表中删除包含列名称的重复行。有人知道我可以做到这一点的方法吗?
Column1 Column2 Column3
Value Value Value
Column1 Column2 Column3 <- dont need this again
Value Value Value
使用 LINQ。
var newtable = oldDS.Tables[0].AsEnumberable().Select(dr => dr).Distinct();
oldDS.Tables.Clear();
oldDS.Tables.Add(newtable.CopyToDataTable());
这个有效:
var distinctRows = ds.Tables[0].AsEnumerable().Distinct(DataRowComparer.Default);
var newDataTable = distinctRows.CopyToDataTable();
如果您只想使用字段的子集进行比较,您可以使用 morelinq 库(在 NuGet 上找到):
var distinctRows = ds.Tables[0].AsEnumerable().DistinctBy(x => new
{
Column1= x["column1"],
Column2 = x["column2"]
});