Я List<BuildingStatus>
позвонил buildingStatus
. Я хотел бы, чтобы проверить , содержит ли он статус , чей символ коды (возвращаемый GetCharCode()
) равна некоторые переменные v.Status
.
Есть ли способ сделать это, как показано ниже (не компилируемый) код?
buildingStatus.Contains(item => item.GetCharValue() == v.Status)
Contains()
метод, и затем я понимаю, что это должно бытьAny()
вместо этого. +1У вас может работать любой метод расширения Linq ...
источник
Вот как вы можете использовать
Contains
для достижения того, что вы хотите:buildingStatus.Select(item => item.GetCharValue()).Contains(v.Status)
это вернет логическое значение.источник
Я не уверен, что именно вы ищете, но эта программа:
производит ожидаемый результат:
Эта программа сравнивает строковое представление перечисления и выдает тот же результат:
Я создал этот метод расширения для преобразования одного IEnumerable в другой, но я не уверен, насколько он эффективен; он может просто создать список за кулисами.
Затем вы можете изменить предложение where на:
и пропустите создание
List<string>
сConvertAll ()
в начале.источник
Если я правильно понимаю, вам нужно преобразовать тип (значение char), который вы храните в списке Building, в тип (enum), который вы храните в списке buildingStatus.
(Для каждого статуса в списке Building // символьное значение // существует ли статус в списке buildingStatus // enum value //)
источник
Building
на вопрос, это уже было действительно нарушено .foreach(Enum value in Enum.GetValues(typeof(buildingStatus)))
ерунда