/ / C#列挙型インデックスを取得する - ソート

C#get列挙型インデックス - ソート

私はこの列挙を持っています:

public enum SymbolPair
{
AUDJPY = 0, AUDNZD, AUDUSD, CADJPY, CHFJPY, EURCHF, EURGBP, EURJPY, EURUSD, GBPJPY, GBPUSD, NZDUSD, USDCAD, USDCHF, USDJPY
}

そして、私はシンボル文字列のコレクションを持っています

List<string> symbols = new List<string>(){ };

シンボルは、入力パラメータに入力されるシンボルに応じて動的にコレクションにロードされます。これらは、任意の順序でカウントすることができます。

たとえば、1セットは「EUR / USD」、「CHFJPY」、「GBPUSD」、

私は列挙型のインデックスに対応するインデックスを見つける必要があります。たとえば、この場合、インデックス8、4、および10が必要です。

誰かがLinqや代理人や他の効率的な方法でこれを行う方法を考えてくださいか? ありがとう

編集:私はこれらの行に沿って何かが必要ですが、linqが単一の値を返すので、これは動作しません。

    SymbolPair[] enumList = (SymbolPair[])Enum.GetValues(typeof(SymbolPair));

foreach (string symbol in symbols)
{
int instrumentIndex = from symbolPair in enumList
where symbolPair.ToString() == symbol
select (int)symbolPair;
}

回答:

回答№1は0

はい、分かりました。とにかく、ありがとう。

SymbolPair[] symbolEnumList = (SymbolPair[])Enum.GetValues(typeof(SymbolPair));
int instrumentIndex = (int)symbolEnumList.Single(symbolPair => symbolPair.ToString() == instr.Symbol.ToString());