16 Stimmen

Wie vergleicht man Daten in LINQ?

Ich möchte überprüfen, ob ein bestimmtes Datum mehr als einen Monat früher als das heutige Datum mit LINQ ist.

Wie lautet die Syntax dafür?

Vielen Dank im Voraus.

30voto

tvanfosson Punkte 506878

Ich gehe davon aus, dass Sie von der Where-Klausel sprechen. Es ist im Grunde die gleiche Art und Weise Sie zwei DateTime-Objekte anderswo vergleichen würde.

using (DataContext context = new DataContext()) {
   var query = from t in context.table
               where t.CreateDate.Date < DateTime.Today.AddMonths(-1)
               select t;
}

5voto

live-love Punkte 40586

Nur um hinzuzufügen, in LINQ To Entities müssen Sie mit einer Variablen vergleichen. Beispiel:

        DateTime lastMonth = DateTime.Today.AddMonths(-1);
        using (var db = new MyEntities())
        {
            var query = from s in db.ViewOrTable
                        orderby s.ColName
                        where (s.StartDate > lastMonth)
                        select s;

            _dsResults = query.ToList();
        }

3voto

Pallavi Punkte 494

Wenn Sie nicht wollen, dass Ihr Code einen

LINQ to Entities does not recognize the method 'System.DateTime AddYears(Int32)' method, and this method cannot be translated into a store expression.

Ich würde vorschlagen, DbFunctions.AddYears zu verwenden. Wenn es Ihnen nur um das Datum und nicht um die Uhrzeit geht, können Sie auch DbFunctions.TruncateTime verwenden.

Etwa so.

DbFunctions.TruncateTime(x.date) ==
DbFunctions.TruncateTime(DbFunctions.AddYears(DateTime.Today, 1))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X