Ich bin ein wenig verwirrt über die Wörterbuch, weil es so klingt, sind Sie nur die Tasten mit der Sequenz anzuzeigen. Ich schätze, das ist ein SortedDictionary<int, Elements>
(obwohl es nicht wichtig ist.) Aber zuerst:
Um zwei Listen zu vergleichen, können Sie SequenceEquals
verwenden.
Lassen Sie uns sagen, dass dies Ihre Enum:
enum Elements { None, Fire, Earth, Water, Air }
ist die Kombination für Sie überprüfen Lassen Sie sagen, ist:
var matches = dictionary.Values.SequenceEquals(elementsToMatch);
Es ist wahr:
var elementsToMatch = new Elements[] { Elements.Fire, Elements.Fire, Elements.Fire };
Sie dies tun könnte wenn beide Sätze die gleichen Elemente in der gleichen Reihenfolge enthalten, andernfalls falsch.
Wenn die Sequenz nicht wichtig, nur die Kombination von Elementen, dann könnte man sich zuerst sortieren:
var matches = dictionary.Values.OrderBy(v=>v)
.SequenceEquals(elementsToMatch.OrderBy(e=>e));
Ist ein Dictionary
notwendig, dies zu tun?
Sie können dies tun:
var elements = new Dictionary<int, Elements>(); // or SortedDictionary
elements.Add(0, Elements.None);
elements.Add(1, Elements.Fire);
// etc.
Oder Sie könnten dies tun:
var elements = new Elements[] { Elements.None, Elements.Water };
Oder eine List<Elements>
verwenden.
Auf jeden Fall so, wie Sie es zugreifen genau das gleiche sein wird:
elements[0]
elements[1]
// etc
Mit einem Wörterbuch möglich ist es, dass ein Schlüssel fehlen könnte. Es könnte eine elements[0]
und elements[2]
, aber keine elements[1]
sein.
Wenn der einzige Grund für das Wörterbuch ist eine Position für jedes Element zu schaffen, dann, weil Sie könnte ein Array oder eine Liste verwenden, wobei jedes Element bereits durch seine Position verwiesen werden kann.
Vielen Dank. Das hat mir sehr geholfen, und ja, ich bin vom Wörterbuch gewechselt, wie du gesagt hast. Zu der Zeit hatte ich eine Idee in meinen Gedanken, aber ich habe es nicht kommentiert, warum ich ein Wörterbuch benutzt habe. Wenn ich also keinen Grund finde, stattdessen Array/Liste zu verwenden, benutze sie nicht, ich benutze sie wieder –