Frage : Wie können C# Gleichteilketten sehr fasten?

Im Problembeispiel unten, wird nach jedes Einzelteil „usableItems“ in in der „originalItems“ Datenstruktur gesucht. Jedes Einzelteil, das nicht gefunden wird, wird in die discardedItems Schnur array.

PROBLEM EXAMPLE
string [] usableItems = gelegt {„1“, „b7“, „13“};
string [] originalItems = {„1“, „3“, „5“, „b7“, „9“, „11“, „13“};
string [] discardedItems = {„3“, „5“, „9“, „11“}; //final result

How sollte Wechselstrom-# Programmstruktur die Daten und die Logik, die Zeit herabsetzen, die abschließende Schnurreihe aufzubauen, die „discardedItems“ genannt wird?

I denken, dass Regex und IndexOf vermutlich langsam sein würden. Und ich bin nicht über die Anwendung von Reihen der Putzfrau [] irgendwie sicher. Auch es konnte Betrachtung eines Wörterbuches für schnelles Nachschlagen geben, aber andererseits erfordert die Festlegung des Wörterbuches auch Zeit. Hmmm.

SOME RICHTLINIEN (möchten einfach offenbar erklären):
(1) die Einzelteile stellen numerisch die Anmerkungen in den allgemeinen Klavierakkorden dar. Es gibt Hunderte Akkorde, mit Schwankungen der Scharfen, Ebenen und Zahl der Einzelteile zum Gleichen und/oder wird zusammengepaßt. Typische Einzelteile sind „3“, „#5“, „7“, „b7“, „#9“, „b11“, „11“, „#11“, „b13“, etc.
(2), welches die Einzelteile immer sich numerisch von links nach rechts erhöhen.
(3) Einzelteile tun nicht repeat.
(4) können von 1 bis 7 „originalItems“ dort sein.
(5) kann von 1 bis 7 „usableItems“ dort sein.
(6) dort ist nie mehr „usableItems“ als „originalItems“.
(7) jedes Einzelteil „in den usableItems“ IMMER EXISTIERT „in den originalItems“.

NOTE: Um dieses Problem darzustellen, werden Schnurreihen für „usableItems“ und „originalItems“ verwendet, aber nur das Endergebnis „discardedItems“ muss eine Schnurreihe sein.

I würde herzlichst irgendeinen Code ideas.
schätzen

Antwort : Wie können C# Gleichteilketten sehr fasten?

Hallo chaffinsjc;

Wenn Sie Sichtstudio benutzen. Netz 2008 oder 2010 dann können Sie den Satzoperator ausgenommen verwenden, um zu erhalten, was Sie benötigen.

Fernando
1:
2:
3:
4:
5:
6:
//, welches die Vorlagen als Liste bildet,  ist effecent
usableItems verzeichnen = neue Liste () {„1“, „b7“, „13“};
originalItems verzeichnen = neue Liste () {„1“, „3“, „5“, „b7“, „9“, „11“, „13“};

//-Resultatsschnur Reihe
[] discardedItems = originalItems.Except (usableItems) .ToArray aufreihen ();
Weitere Lösungen  
 
programming4us programming4us