Ich habe ein Beispiel in SQL, wie man die gleiche Logik in Linq zu Entity verwendet?Wie zwischen zwei Daten in LINQ to Entity suchen?
SELECT * FROM TABLE WHERE DATE BETWEEN STARTDATE AND ENDDATE
Ich habe ein Beispiel in SQL, wie man die gleiche Logik in Linq zu Entity verwendet?Wie zwischen zwei Daten in LINQ to Entity suchen?
SELECT * FROM TABLE WHERE DATE BETWEEN STARTDATE AND ENDDATE
Ich gehe von C#.
DateTime startDate=bla;
DateTime endDate=blabla;
using(var db=new MyDataContext())
{
var filteredData=db.TABLE.Where(t => t.DATE > startDate && t.DATE < endDate);
//...
}
Sie wollen es am Startdatum bis einschließlich, aber exklusiven am Enddatum. Dies ist weil ein DateTime
als Datum verwendet wird, ist wirklich der Anfang dieses Tages und erstreckt sich nicht bis zum Ende des Tages.
// 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)
Auch wenn Sie bestimmte DateTime
Werte verwenden, kann es immer noch wichtig sein >=
und <
zu verwenden, anstatt >=
und <=
oder >
und <
.
Wenn Sie beide "oder" -Zeichen verwendet haben, dann enthalten zwei Datumsbereiche von X bis Y und von Y bis Z Datensätze, die exakt mit Y übereinstimmen. Je nach Ihren Anforderungen könnte es ein schwerwiegender Fehler sein, den Datensatz aufzunehmen in beiden Zeiträumen. Wenn Sie >
und <
verwenden, würden Sie in beiden Datumsbereichen Datensätze ausschließen, die exakt mit Y übereinstimmen.
Verwenden Sie '> =' und '<=', um die gleichen Ergebnisse wie 'BETWEEN' zu erzielen. –
Ich benutze BETWEEN nie genau aus diesem Grund. Ich bevorzuge die Explizitheit der anderen Form. – spender
Für mich funktionierte das nicht LINQ to Entity error. Ich verwende auch DBContext –