2 Stimmen

Abrufen des niedrigsten Jahres aus LINQ-Abfrageergebnissen

Ich versuche, das früheste Jahr aus einer Gruppe von Zeilen zu finden, die von einer LINQ-Abfrage zurückgegeben werden. Das ActivationDate ist als Datetime-Wert in der DB gespeichert.

Ich weiß, dass ich eine separate Abfrage erstellen kann, um nur das Datum zu erhalten, aber ich würde lieber die Ergebnisse der vorhandenen Abfrage verwenden, da sie für mehrere andere Dinge verwendet wird.

IEnumerable<MonitoringPanel> panels = from rows in db.MonitoringPanels
                                      where rows.DealerEntity == dealerIDint
                                      select rows;

Dies führt jedoch immer wieder zu einer Fehlermeldung:

var testDate = panels.Min().ActivationDate;

Fehler:

System.ArgumentException was unhandled by user code.

Es wird ein Fehler ausgegeben, auch wenn ich versuche, die niedrigste PanelNumner (als int gespeichert) auszuwählen, aber das Folgende funktioniert:

var testDate = panels.FirstOrDefault().ActivationDate;

Lösung

        DateTime testDate = (DateTime)panels.Min( thing => thing.ActivationDate);
        int lowYear = testDate.Year;

3voto

Ash Burlaczenko Punkte 23186

Sofern die Enumerable nicht von einem perimativen Typ ist, müssen Sie einen Lambda-Ausdruck hinzufügen, um ihr mitzuteilen, welche Eigenschaft der Klasse sie verwenden soll. Versuchen Sie

var testDate = panels.Min(x => x.ActivationDate);

1voto

DaveShaw Punkte 50735

Ich denke, Sie müssen dem Min() Methode, nach der das Minimum zu suchen ist. Welches Feld ist das Minimum.

var testDate = panels.Min(panel => panel.ActivationDate);

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