我目前的C#代码存在问题;它在我的数据表中生成重复的行,但在我的数据库本身中没有。我不能为我的生活找到什么导致它,所以我尝试创造一个工作,但这似乎似乎也没有工作。任何帮助将不胜感激。
for (int i = 0; i < ds.Tables[0].Rows.Count; i ++ )
{
for(int n = 0; n< ds.Tables[0].Rows.Count; n++)
{
if (n == i)
{
//do nothing
}
else
{
if (ds.Tables[0].Rows[i] == ds.Tables[0].Rows[n])
{
ds.Tables[0].Rows[n].Delete();
}
}
}
}
答案 0 :(得分:2)
我认为你的问题与等式比较有关,试图在更简单的POCO类(一个只使用广告数据模型的小类)上映射DataRow(很难按原样)。
然后使用group by或distinct来过滤数据。
这里有一个小例子:
POCO课程
public class DataRowModel
{
public object FirstCellData { get; set; }
public object SecondCellData { get; set; }
//... for every column in DataRow
public object LastCellData { get; set; }
public DataRowModel (DataRow row)
{
this.FirstCellData = row["FIELD_1"] ;
this.SecondCellData = row["FIELD_2"];
this.LastCellData = row["FIELD_3"];
}
}
实现唯一行的代码:
List<DataRowModel> rows = new List<DataRowModel> ();
foreach (DataRow row in ds.Tables[0].Rows)
rows.Add( new DataRowModel ( row) );
List<DataRowModel> uniqueRows = new List<DataRowModel> ();
foreach (var groupedRow in rows.GroupBy(x => new { x.FirstCellData, x.SecondCellData, /*.. for each cell..*/ x.LastCellData }))
uniqueRows.Add(groupedRow.First());