我正在尝试撰写LINQ
或LINQPad4
查询,以检查DateRange
是否会在周末失败。
有人有办法吗?
如果这是一种更简单的方法,它可以检查DateRange
中的任何指定日期是否为“星期六”。
如果无法对DateRange
执行此操作,是否有办法检查特定DateTime
的指定日期?
== EDIT ==
我试图在LINQ
查询表达式中查询SQL
数据库。
答案 0 :(得分:2)
Console.WriteLine(dateValue.ToString("ddd")); // Displays Wed
检查之间很简单:
var isInRange = dateToCheck >= startDate && dateToCheck < endDate;
作为@Sergey Berezovskiy answered here:
您也可以使用Martin Fowlers date range:
public interface IRange<T>
{
T Start { get; }
T End { get; }
bool Includes(T value);
bool Includes(IRange<T> range);
}
public class DateRange : IRange<DateTime>
{
public DateRange(DateTime start, DateTime end)
{
Start = start;
End = end;
}
public DateTime Start { get; private set; }
public DateTime End { get; private set; }
public bool Includes(DateTime value)
{
return (Start <= value) && (value <= End);
}
public bool Includes(IRange<DateTime> range)
{
return (Start <= range.Start) && (range.End <= End);
}
}
用法:
DateRange range = new DateRange(startDate, endDate);
range.Includes(date)
答案 1 :(得分:2)
使用Linq to SQL,您可以使用DateTime的属性。您可以引入新的范围变量,该变量将保留当前的星期几,然后使用它来检查是否在周末的某一天:
from f in Foos
let day = f.Date.DayOfWeek
where day == DayOfWeek.Saturday || day == DayOfWeek.Sunday
select f