私はちょうどシーケンスを示すためにキーを使用しているように聞こえるので、少し混乱しています。しかし、最初は:
SequenceEquals
の2つのリストを比較するには、これは、SortedDictionary<int, Elements>
であると推測しています。
さんが言ってみましょうこれはあなたの列挙です:
は
var elementsToMatch = new Elements[] { Elements.Fire, Elements.Fire, Elements.Fire };
あなたはこれを行うことができます:
var matches = dictionary.Values.SequenceEquals(elementsToMatch);
それは本当だ
enum Elements { None, Fire, Earth, Water, Air }
はのは、あなたがチェックしている組み合わせであるとしましょう両方のセットに同じシーケンスの同じ要素が含まれている場合はfalse、そうでない場合はfalse
シーケンスは、単なる要素の組み合わせが重要でない場合は、あなたが最初にそれらを並べ替えることができは:
var matches = dictionary.Values.OrderBy(v=>v)
.SequenceEquals(elementsToMatch.OrderBy(e=>e));
これを行うために必要なDictionary
ですか?
var elements = new Dictionary<int, Elements>(); // or SortedDictionary
elements.Add(0, Elements.None);
elements.Add(1, Elements.Fire);
// etc.
をそれとも、これを行うことができます:
あなたはこれを行うことができます
var elements = new Elements[] { Elements.None, Elements.Water };
するか、List<Elements>
を使用しています。それはキーが失われる可能性があります辞書で
elements[0]
elements[1]
// etc
:いずれの場合で
あなたはそれがまったく同じになりますアクセスする方法
。
elements[0]
と
elements[2]
がありますが、
elements[1]
はありません。
辞書の唯一の理由は、各要素の位置を提供することである場合は、配列またはリストを使用することができます。
ありがとうございます。これは私が多くの助けと、あなたが言ったように私は辞書から切り替えました。私の考えではアイデアがあったのですが、なぜ辞書を使ったのかはコメントしていませんでした。なぜなら配列/リストを使わない理由が見つからないと、 –