删除范围内的重复次数并标记它们



我遇到了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;
    }

最新更新