私は、列挙値のリストを含むクラスを持っている:を設定取得
class MyClass
{
List<Category> ListProperty = ...
}
は今、私はベースをフィルタリングするMyClass
の要素を含むリストを持っていますその列挙値リストに追加します。
Category
は、バイナリの組み合わせを可能にするためにFlags
でマークされている:
var m = new Myclass {
ListProperty = new List<Category> {
Category.Some_Category | Category.Another_Category,
Category.Basic
}
});
myList.Add(m);
:
MyClass
内
enum Category
{
None = 0x00,
Basic = 0x1,
Geometry = 0x2,
// ...
Base_Geometry = 0x100
}
リストはまたは二値組み合わされない場合があります列挙値の任意の数からなっていてもよいです
myList
の中にある指定されたCategory
を含むすべての要素を取得するには、私はこれを使用します:
var cat = Category.Geometry;
var result = myList.Where(x => x.ListProperty.Any(y => (y & cat) == cat));
cat
が複数の列挙値で構成されているときに問題が発生するようになりました。例えば。 cat
がCategory.Geometry | Category.Base_Geometry
に等しい場合、ListProperty
にGeometry
、Base_Geometry
、またはその両方のいずれかを持つすべての要素を選択したいとします。この場合、result
は空です。
実際には、Flagsでマークしました。しかし、 'HasFlags'は.NET4でのみ定義されています。私は使用できません。 – HimBromBeere
@HimBromBeere私は - あなたが.NETの以前のバージョンを使用していることを認識していませんでした。 – dasblinkenlight
質問に適切なタグを追加しました。 – HimBromBeere