2017-06-12 3 views
0

ich die folgenden Arrays haben.Taking Elemente aus der zweiten Reihe, minus ungültige Werte

int[] masterProducts = [1, 2, 3, 4, 5, 6]; 
int[] selectedProducts = [1, 2, 3, 8]; 

Ich möchte ein Array erstellen, die nur die selectedProducts hat, abzüglich aller ungültigen Produkte (ex von oben, ist 8 ein ungültiges Produkt, weil es nicht in masterProducts ist).

So habe ich 2 Fragen:

  1. Was die einfachste Code ist zu erfahren, dass selectedProducts ein ungültiges Produkt hat? Ich könnte etwas für/Looping tun, aber das scheint ineffizient.
  2. Was ist die einfachste Art und Weise in C# nur selectedProducts zu nehmen, abzüglich aller ungültigen Produkte (minus der Anzahl 8 in diesem Fall)?

Antwort

4

Was ist der einfachste Code, um herauszufinden, dass selectedProducts ein ungültig Produkt hat? Ich könnte etwas für/Looping tun, aber das scheint ineffizient.

Es ist einfach mit LINQ Except Methode zu tun, die die eingestellte Differenz von zwei Sequenzen erzeugt. Beachten Sie auch, dass die Leistung ziemlich gut sein wird, weil es sich um eine Set-Operation ist (verwendet Hash intern gesetzt):

bool hasInvalidProduct = selectedProducts.Except(masterProducts).Any(); 

Was die einfachste Art und Weise in C# ist nur selectedProducts zu nehmen, minus alle ungültigen Produkte (minus Nummer 8 in diesem Fall)?

Es ist auch einfach ein - Sie Intersect Operator verwenden können, die die Schnittmenge zweier Sequenzen erzeugt:

var validProducts = selectedProducts.Intersect(masterProducts); 

Dies ist ein Satz Betreiber auch, und es nutzt auch intern gesetzten Hash schnell zu finden, wenn die Element aus der ersten Sequenz existiert in dem Hash-Satz, der aus den zweiten Sequenzelementen - O (1) -Operation erstellt wurde.

+0

@Targaryen 'Except',' Any' und 'Intersect' sind Erweiterungsmethoden von' System.Linq' Namespace. Alle diese Methoden sind Erweiterungen für jeden aufzählbaren Datentyp - sowohl Liste von ganzen Zahlen als auch Array sind in Ordnung. Stellen Sie sicher, dass Sie am oberen Ende der Datei die richtige Verwendung haben –

Verwandte Themen