[Flag]
属性を持つenum
を定義しました。Where on Enum値を使用する
与えられた整数値では、整数値に設定されたビットのすべてのenum
値を出力したいと思います。
これまで私がこれまで持っていたことは次のとおりです。
string s = string.Join(", ", Enum.GetValues(typeof(MyEnumType)).OfType<Enum>()
.Where(x => (MyIntValue & (int)x) != 0));
しかし、最後の行でint
に型キャストは私に、次のエラーが発生します。
私は、MicrosoftがLINQをサポートするタイプの賛成で
Array
を返し、すべてのフレームワークのコードを置き換えてほしい "int型
に型「System.Enum」に変換できません。
しかし、これを行う簡単な方法はありますか?
なぜ行わない '.OfType()'の代わりに '.OfType ()'の? –
あなたのint値を列挙型にキャストし、ToString()を呼び出すことは、あなたが望むものを正確に行うはずです。 http://stackoverflow.com/questions/8447/what-does-the-flags-enum-attribute-mean-in-c?rq=1 – devio
を参照してください。「MicrosoftがArrayを返すすべてのフレームワークコードを置き換えることを希望しますLINQをサポートするタイプの " Linqの前に書かれたすべてのレガシーコードについて、彼らは何をすべきでしょうか?何年にもわたって開発されたコードが突然壊れてしまいましたか? –