C# 日期时间组(按日期或小时)

C# 日期时间组(按日期或小时),c#,.net,C#,.net,01.02.2010 0:00:00->01.02.2010任何时间 01.02.2010 0:00:00->01.02.2010 0:任何分秒 这是我的约会: DateTime x; 它是 01.02.2010 0:00:00 一串 x.Date.ToString() 这里我比较日期 DatarowsForOneDay = dt.Select("DailyRecTime= '" + x.ToString() + "'"); 因此,我如何按日期+小时分组,而不关心分钟和秒。您可以编写自

01.02.2010 0:00:00->01.02.2010任何时间

01.02.2010 0:00:00->01.02.2010 0:任何分秒

这是我的约会:

 DateTime x;
它是 01.02.2010 0:00:00 一串

 x.Date.ToString()
这里我比较日期

DatarowsForOneDay = dt.Select("DailyRecTime= '" + x.ToString() + "'");

因此,我如何按日期+小时分组,而不关心分钟和秒。

您可以编写自己的
IEqualityComparer
来只比较您关心的部分日期时间。LINQ的GroupBy有一个重载,它需要一个
IEqualityComparer
。我最近也有同样的问题,我就是这么做的

但在转换为字符串之前,必须调用
GroupBy
。如果不能,则可能需要创建一个
IEqualityComparer
,并在比较之前将字符串解析回
DateTime

我现在没有原始代码。我从内存中重新键入了这个,没有测试它


public class DateAndHourComparer : IEqualityComparer
{
    public bool Equals(DateTime x, DateTime y)
    {
        var xAsDateAndHours = AsDateHoursAndMinutes(x);
        var yAsDateAndHours = AsDateHoursAndMinutes(y);

        return xAsDateAndHours.Equals(yAsDateAndHours);
    }

    private DateTime AsDateHoursAndMinutes(DateTime dateTime)
    {
        return new DateTime(dateTime.Year, dateTime.Month, 
                            dateTime.Day, dateTime.Hour, 
                            dateTime.Minute, 0);
    }

    public int GetHashCode(DateTime obj)
    {
        return AsDateHoursAndMinutes(obj).GetHashCode();
    }
}
我从来没有做过基于字符串的版本,但它可以使用上面基于
DateTime
的代码,看起来像


public class DateAndHourStringComparer : IEqualityComparer
{
    private readonly DateAndHourComparer dateComparer = new DateAndHourComparer();

    public bool Equals(string x, string y)
    {
        var xDate = DateTime.Parse(x);
        var yDate = DateTime.Parse(y);

        return dateComparer.Equals(xDate, yDate);
    }

    public int GetHashCode(string obj)
    {
        var date = DateTime.Parse(obj);
        return dateComparer.GetHashCode(date);
    }
}

我没有测试它,我没有添加空检查或格式检查。该代码旨在演示一般思路。

您可以使用DateTime.ToString(字符串模式)传递参数。
更多信息@。

但是你是如何进行分组的?我想我对分组的理解太过字面化了。你只需要格式化方面的帮助吗?我需要组。。。但关于格式的这一点也是组的比较方法