我有一个重复行的DataTable。行是相等的,但日期是不同的,并且在某些列中没有插入日期。我需要删除较旧的副本,并删除没有插入日期的副本。我有以下代码,但由于无法将字段转换成mAuth = FirebaseAuth.getInstance();
if (mAuth.getCurrentUser() != null) {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
进行比较而无法正常工作。
DateTime
答案 0 :(得分:0)
因此,您要根据date
列删除重复项吗?您可以使用LINQ:
List<DataRow> duplicateRows = dTable.AsEnumerable()
.GroupBy(r => r[colName])
.SelectMany(g => g
.Select(r => new
{
Row = r,
Date = DateTime.TryParse(r.Field<string>("date"), out DateTime date)
? date : new DateTime?()
})
.OrderByDescending(x => x.Date.HasValue)
.ThenByDescending(x => x.Date.GetValueOrDefault())
.Skip(1)) // only the first row of the group will be retained
.Select(x => x.Row)
.ToList();
duplicateRows.ForEach(dTable.Rows.Remove);
因此,首先所有包含日期值的行,该组按日期值本身的降序排列,因此最新的第一行,所有其他行都是重复的。