Ich habe einen List<BuildingStatus>
angerufen buildingStatus
. Ich möchte prüfen, ob es einen Status enthält, dessen Zeichencode (zurückgegeben von GetCharCode()
) einer Variablen entspricht v.Status
.
Gibt es eine Möglichkeit, dies im Sinne des folgenden (nicht kompilierten) Codes zu tun?
buildingStatus.Contains(item => item.GetCharValue() == v.Status)
Contains()
Methode anbietet , und dann wird mir klar, dass esAny()
stattdessen so sein soll . +1Die Linq-Erweiterungsmethode Jeder könnte für Sie arbeiten ...
quelle
So können Sie
Contains
erreichen, was Sie wollen:buildingStatus.Select(item => item.GetCharValue()).Contains(v.Status)
Dies gibt einen Booleschen Wert zurück.quelle
Ich bin mir nicht sicher, wonach Sie suchen, aber dieses Programm:
erzeugt die erwartete Ausgabe:
Dieses Programm vergleicht eine Zeichenfolgendarstellung der Aufzählung und erzeugt dieselbe Ausgabe:
Ich habe diese Erweiterungsmethode erstellt, um eine IEnumerable in eine andere zu konvertieren, bin mir aber nicht sicher, wie effizient sie ist. Möglicherweise wird nur eine Liste hinter den Kulissen erstellt.
Dann können Sie die where-Klausel in Folgendes ändern:
und überspringen Sie das Erstellen des
List<string>
mitConvertAll ()
am Anfang.quelle
Wenn ich das richtig verstehe, müssen Sie den Typ (Zeichenwert), den Sie in der Gebäudeliste speichern, in den Typ (Aufzählung) konvertieren, den Sie in der Gebäudestatusliste speichern.
(Existiert der Status für jeden Status in der Gebäudeliste // Zeichenwert // in der Gebäudestatusliste // Aufzählungswert //)
quelle
Building
aus der Frage entfernt wurden, war dies bereits wirklich kaputt .foreach(Enum value in Enum.GetValues(typeof(buildingStatus)))
ist Unsinn.