我必须比较linq查询中的三个日期(datetime a< datetime b< datetime c),但只是属性月和日。我该怎么做?
答案 0 :(得分:3)
这就是你要找的东西:
(a.Month < b.Month || (a.Month == b.Month && a.Day < b.Day)) && (b.Month < c.Month || (b.Month == c.Month && b.Day < c.Day))
答案 1 :(得分:3)
您可以使用当前年份创建新的日期时间:
var year = DateTime.Now.Year;
var dateATemp = new DateTime(year, dateA.Month, dateA.Day);
var dateBTemp = new DateTime(year, dateB.Month, dateB.Day);
var dateCTemp = new DateTime(year, dateC.Month, dateC.Day);
现在比较dateATemp&lt; dateBTemp&lt; dateCTemp
您可以从DateTime编写一个扩展方法,它将返回一个当前年份的新DateTime实例:
public static DateTime ToDateTimeWithCurrentYear(this DateTime value)
{
return new DateTime(DateTime.Now.Year, value.Month, value.Day);
}
并像这样使用它:
dateA.ToDateTimeWithCurrentYear() < dateB.ToDateTimeWithCurrentYear() < dateC.ToDateTimeWithCurrentYear()