Eu tenho um List<BuildingStatus>
chamado buildingStatus
. Gostaria de verificar se ele contém um status cujo código de char (retornado por GetCharCode()
) é igual a alguma variável v.Status
,.
Existe alguma maneira de fazer isso, seguindo as linhas do código (não compilável) abaixo?
buildingStatus.Contains(item => item.GetCharValue() == v.Status)
Contains()
método, e então percebo que deveria serAny()
. +1O método de extensão Linq Any poderia funcionar para você ...
fonte
Aqui está como você pode usar
Contains
para alcançar o que deseja:buildingStatus.Select(item => item.GetCharValue()).Contains(v.Status)
isso retornará um valor booleano.fonte
Não sei exatamente o que você está procurando, mas este programa:
produz a saída esperada:
Este programa compara uma representação de string do enum e produz a mesma saída:
Criei esse método de extensão para converter um IEnumerable em outro, mas não tenho certeza de quão eficiente é; pode apenas criar uma lista nos bastidores.
Em seguida, você pode alterar a cláusula where para:
e pule a criação de
List<string>
comConvertAll ()
no início.fonte
Se bem entendi, você precisa converter o tipo (valor de char) que você armazena na lista Building para o tipo (enum) que você armazena na lista buildingStatus.
(Para cada status na lista Building // valor do caractere //, o status existe na lista buildingStatus // valor da enum //)
fonte
Building
da pergunta, isso já estava realmente quebrado .foreach(Enum value in Enum.GetValues(typeof(buildingStatus)))
é um absurdo.