Ответ 1
Я предполагаю С#.
DateTime startDate=bla;
DateTime endDate=blabla;
using(var db=new MyDataContext())
{
var filteredData=db.TABLE.Where(t => t.DATE > startDate && t.DATE < endDate);
//...
}
У меня есть пример в SQL, как использовать ту же логику в Linq для Entity?
SELECT * FROM TABLE WHERE DATE BETWEEN STARTDATE AND ENDDATE
Я предполагаю С#.
DateTime startDate=bla;
DateTime endDate=blabla;
using(var db=new MyDataContext())
{
var filteredData=db.TABLE.Where(t => t.DATE > startDate && t.DATE < endDate);
//...
}
Вы хотите, чтобы он был включен в дату начала, но был исключен в дату окончания. Это связано с тем, что DateTime
, используемый в качестве даты, действительно является самым началом этого дня и не распространяется до конца дня.
// dates that are inclusive on the date range
var startDate = new DateTime(2016, 1, 1);
var endDate = new DateTime(2016, 12, 31);
...
// WRONG: this will ignore data on the last day
.Where(obj => obj.StartDate >= startDate && obj.EndDate <= endDate)
// RIGHT: this will include the last day
var endDateExclusive = endDate.AddDays(1);
...
.Where(obj => obj.StartDate >= startDate && obj.EndDate < endDateExclusive)
Использование знаков <=
или >=
в сравнении с <
или >
не так уж и важно, так как на самом деле они просто указывают, следует ли включать DateTime
с этой точной миллисекундой или нет. Технически вы не хотите включать 12am в эксклюзивную дату, но делайте это с включенной датой, как указано выше.
Ни одно из этого не будет применяться, если вы выбрали очень конкретные значения DateTime
, которые содержат не только дату, но и время суток.