我遇到了c#中list的一个小问题
我有一个列表,上面有一些非常相似的日期。现在我需要做的是删除重复,但重复的地方是,如果它在另一个时间的一分钟内,所以不完全相同。除此之外,如果有特定时间的重复,对象应该在最终列表中有一个标志说明。
现在我可以看到这可以用很多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, isduplicate =true}
{date = 13/12/12 10:13:00, isduplicate =false}
{date = 21/10/15 07:13:00, isduplicate =false}
public class DateDuplicate{
public DateTime date;
public bool isDuplicate = false;
}
List<DateDuplicate> RemoveAndMark(List<DateTime> dates){
///something nice here hopefully
}
谢谢你的帮助!
试试这个
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;
}