J'ai un List<BuildingStatus>
appelé buildingStatus
. Je voudrais vérifier si elle contient un état dont le code char (retourné par GetCharCode()
) est égale à une variable, v.Status
.
Existe-t-il un moyen de le faire, dans le sens du code (non compilant) ci-dessous?
buildingStatus.Contains(item => item.GetCharValue() == v.Status)
Contains()
méthode sur Terre , puis je me rends compte que c'est censé l'être à laAny()
place. +1La méthode d'extension Linq Any pourrait fonctionner pour vous ...
la source
Voici comment vous pouvez utiliser
Contains
pour réaliser ce que vous voulez:buildingStatus.Select(item => item.GetCharValue()).Contains(v.Status)
cela renverra une valeur booléenne.la source
Je ne sais pas exactement ce que vous recherchez, mais ce programme:
produit le résultat attendu:
Ce programme compare une représentation sous forme de chaîne de l'énumération et produit la même sortie:
J'ai créé cette méthode d'extension pour convertir un IEnumerable en un autre, mais je ne suis pas sûr de son efficacité; il peut simplement créer une liste dans les coulisses.
Ensuite, vous pouvez modifier la clause where en:
et ignorez la création du
List<string>
avecConvertAll ()
au début.la source
Si je comprends bien, vous devez convertir le type (valeur char) que vous stockez dans la liste Building en le type (enum) que vous stockez dans la liste buildingStatus.
(Pour chaque statut de la liste Building // valeur de caractère //, le statut existe-t-il dans la liste buildingStatus // valeur d'énumération //)
la source
Building
la question, cela était déjà vraiment cassé .foreach(Enum value in Enum.GetValues(typeof(buildingStatus)))
est un non-sens.