在给定日期的情况下获得本周六的linq相当于什么?
这就是我在sql中所做的事情
select trunc(sysdate, 'DAY')+6 from dual
谢谢
答案 0 :(得分:2)
我不知道LINQ与它有什么关系,但您可以使用静态扩展方法创建本地帮助器方法甚至是扩展类:
public static class DateTimeExtension
{
public static DateTime Next(this DateTime startDate, DayOfWeek targetDay)
{
do {
startDate = startDate.AddDays(1);
} while (startDate.DayOfWeek != targetDay)
return startDate;
}
}
然后你可以这样做:
DateTime nextSaturday = DateTime.Now.Next(DayOfWeek.Saturday);
这可以与LINQ一起使用:
DateTime[] days = new DateTime[] { new DateTime(2015,10,5), new DateTime(2015,9,7)};
var saturdays = from day in days select day.Next(DayOfWeek.Saturday);
答案 1 :(得分:1)
这取决于您的LINQ提供程序支持的内容。一般来说,在LINQ之外,您可以将其写为date.AddDays(6 - (int) date.DayOfWeek)
。这有可能被LINQ提供商翻译。
但是,对于AddDays
方法和DayOfWeek
属性,任何特定的LINQ提供程序都可能需要使用特殊函数而不是.NET DateTime
自己的方法和财产。实体框架到SQL Server有例如SqlFunctions.DateAdd
和SqlFunctions.DatePart
。其他实体框架提供商也可以接受这些。
您的问题中没有足够的信息来了解您正在使用哪个特定的LINQ提供商,这就是为什么我只回答一般信息。如果这些方法和属性都不适合您,则必须检查您正在使用的特定LINQ提供程序的文档。