Есть две вещи, которые нужно изменить.
Во-первых, вам нужно переопределить ваше перечисление следующим образом:
[Flags]
public enum ConversionResults
{
Added = 1,
Validated = 2,
ValidationFailed = 4,
Uploaded = 8,
Processing = 16,
Converted = 32,
ConversionFailed = 64
}
Атрибут
[Flags]
сам по себе не присваивает степень двух значениям перечисления (что необходимо, если значения перечисления должны служить флагами); вам все еще нужно сделать это вручную. Атрибут (AFAIK) влияет только на метод .ToString()
, используемый при возврате строкового представления значений перечисления.
Во-вторых, в методе .RemoveAll()
ваш предикат должен быть сформирован так:
ConversionModelList.RemoveAll(p =>
p.Result.HasFlag(ConversionResults.Validated) |
p.Result.HasFlag(ConversionResults.ValidationFailed) |
p.Result.HasFlag(ConversionResults.Uploaded));
Это удалит те элементы, которые имеют любой из флагов Validated
, ValidationFailed
и Uploaded
.