C# 日期时间组(按日期或小时)
01.02.2010 0:00:00->01.02.2010任何时间 01.02.2010 0:00:00->01.02.2010 0:任何分秒 这是我的约会: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() + "'"); 因此,我如何按日期+小时分组,而不关心分钟和秒。您可以编写自
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(字符串模式)传递参数。
更多信息@。但是你是如何进行分组的?我想我对分组的理解太过字面化了。你只需要格式化方面的帮助吗?我需要组。。。但关于格式的这一点也是组的比较方法