所以我遇到了C#中列表的一个小问题
我有一个列表,它有一些非常相似的日期。现在我需要做的是删除重复,但如果重复是在另一个时间的一分钟内,那么不完全相同。 除此之外,如果有特定时间的副本,对象应该在最终列表中有一个标记。
现在我可以看到如何通过大量的for循环来完成这项工作,但我希望LINQ能够很好地实现这一点。到目前为止,我的尝试并没有很顺利。
作为示例,列出以下日期:
21/12/12 12:13:00
21/12/12 12:13:20
13/12/12 10:13:00
21/10/15 07:13:00
应该变成DateDuplicate对象列表:
{date = 21/12/12 12:13:00,isDuplcicate = true}
{date = 13/12/12 10:13:00,isDuplcicate = false}
{date = 21/10/15 07:13:00,isDuplcicate = false}
public class DateDuplicate{
public DateTime date;
public bool isDuplicate = false;
}
List<DateDuplicate> RemoveAndMark(List<DateTime> dates){
///something nice here hopefully
}
感谢您的帮助!
答案 0 :(得分:0)
试试这个
List<DateDuplicate> RemoveAndMark(List<DateTime> dates)
{
var dateValues = dates.GroupBy(y => new { AddHours = y.Date.Date.AddHours(y.Hour), y.Minute}).Select(x =>
new DateDuplicate {isDuplicate = x.Count() > 1, date = x.Key.AddHours.AddMinutes(x.Key.Minute)}
);
return dateValues;
}