Mam List<BuildingStatus>
telefon buildingStatus
. Chciałbym sprawdzić, czy zawiera on status której char code (zwrócony przez GetCharCode()
) równa jakąś zmienną v.Status
.
Czy jest jakiś sposób na zrobienie tego, zgodnie z liniami poniższego (niekompilującego) kodu?
buildingStatus.Contains(item => item.GetCharValue() == v.Status)
Contains()
metody, a potem zdaję sobie sprawę, że tak powinno byćAny()
. +1Metoda rozszerzenia Linq Any może działać dla Ciebie ...
źródło
Oto, jak możesz
Contains
osiągnąć to, czego chcesz:buildingStatus.Select(item => item.GetCharValue()).Contains(v.Status)
zwróci to wartość logiczną.źródło
Nie jestem pewien, czego dokładnie szukasz, ale ten program:
daje oczekiwany wynik:
Ten program porównuje ciąg reprezentujący wyliczenie i generuje te same dane wyjściowe:
Utworzyłem tę metodę rozszerzenia, aby przekonwertować jeden IEnumerable na inny, ale nie jestem pewien, jak wydajna jest; może po prostu utworzyć listę zakulisową.
Następnie możesz zmienić klauzulę where na:
i pomiń tworzenie
List<string>
zConvertAll ()
na początku.źródło
Jeśli dobrze rozumiem, musisz przekonwertować typ (wartość znaku), który przechowujesz na liście budynków, na typ (wyliczenie), który przechowujesz na liście buildingStatus.
(Dla każdego statusu na liście budynków // wartość znakowa //, czy status istnieje na liście buildingStatus // wartość wyliczenia //)
źródło
Building
z pytania wszystkie odniesienia do , to zostało już naprawdę zepsute .foreach(Enum value in Enum.GetValues(typeof(buildingStatus)))
to nonsens.