Я определил enum
с атрибутом [Flag]
.Использование Where on Enum Values
Учитывая целочисленное значение, я хотел бы напечатать все значения enum
для битов, установленных в целочисленном значении.
Вот что у меня есть.
string s = string.Join(", ", Enum.GetValues(typeof(MyEnumType)).OfType<Enum>()
.Where(x => (MyIntValue & (int)x) != 0));
Но напечатанный на int
в последней строке дает мне следующую ошибку.
Невозможно преобразовать тип «System.Enum» в «» междунар
Я желаю Microsoft заменит все Рамочную код, который возвращает Array
в пользу типов, которые поддерживают LINQ.
Но есть ли простой способ сделать это?
Почему не делают '.OfType()' вместо '.OfType ()'? –
листинг вашего значения int для Enum и вызов ToString() должны делать именно то, что вы хотите. См. Http://stackoverflow.com/questions/8447/what-does-the-flags-enum-attribute-mean-in-c?rq=1 – devio
«Я хочу, чтобы Microsoft заменила весь код Framework, который возвращает Array в пользу типов, поддерживающих LINQ. " - и что они должны делать со всем устаревшим кодом, который был написан до Linq? Просто пусть весь этот код, разработанный за эти годы, внезапно сломается? –