日期时间组由日期或小时

问题描述:

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() + "'"); 

所以你怎么能不关心我组按日期+时间约分和秒。

+0

我想我太接受了字面意思。你只需要帮助格式化? – 2010-03-09 10:58:14

+0

我需要群...但这也是关于格式化的一种比较方法 – Cynede 2010-03-09 11:06:14

您可以编写自己的IEqualityComparer<DateTime>,以仅比较您关心的DateTime部分。 LINQ的GroupBy有一个过载,需要IEqualityComparer。我最近遇到了同样的问题,并做到了这一点。

但是,在转换为字符串之前,您必须先致电GroupBy。如果您不能,那么您可能需要创建一个IEqualityComparer<string>,并在比较之前将字符串解析回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); 
    } 
} 

我没有测试过,我没加null检查或格式检查。该代码旨在说明总体思路。

+0

您可以分享一些示例代码吗? – Cynede 2010-03-09 10:46:39

您可以使用DateTime.ToString(string pattern)传递参数。 更多信息@http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm

+0

但是你怎么做的小组? – 2010-03-09 10:47:04

+0

01.02.2010 0:00:00 = 01.02.2010 ...它的工作原理 – Cynede 2010-03-09 10:53:31