4

C#を使用してLinqで文字列を列挙型に変換するには?

以下の型キャストはlinqでも機能しますか?:

(Audience)Enum.Parse(typeof(Audience), value, true);

はいの場合、これをどのように使用できるか教えてください。

4

1 に答える 1

7

与えられた列挙型

enum Foo{A, B, C}

以下のコードは、 からenumへの変換、stringおよびその逆の変換を実行します。

var values = 
from name in Enum.GetNames(typeof(Foo))
select (Foo)Enum.Parse(typeof(Foo), name, true);

はい、キャスティングは機能します。ただし、上記のクエリは、解析できない値をメソッドが受け取ったArgumentException場合にスローされることに注意してください。Enum.Parse

この更新されたバージョンは、正常に解析された値のみを返します

enum Foo{A, B, C}

var values =  
   from name in Enum.GetNames(typeof(Foo))
   where Enum.IsDefined(typeof(Foo), name)
   select (Foo)Enum.Parse(typeof(Foo), name, true);
于 2012-05-08T08:17:02.143 に答える