Frage

Ich habe eine Frage zu effizienter Umsetzung. Lets sagen, ich habe zwei Arrays:

One array is all possible items in a house: Table, Chair, TV, Fireplace, Bed

The other is an array of items in a particular house: Table, TV, Bed

Ich habe auch zwei Listenfelder:

1. listbox for items in the house - the "HAS" list box
2. listbox items not in the house - the "NEEDS" list box

Ich brauche die Elemente bereits in dem Haus in der „HAS“ Listenfeld sowie die Elemente aufzulisten, die nicht in dem Haus in der „needs“ Listenfeld sind. Es scheint mir, dass „Für jede“ Schleife verschachtelt ein Anfang zur Lösung dieses Problems wäre, aber ich bin nicht ganz sicher, welcher Fall verschachtelt werden muss. Was ist der effizienteste Weg, eine Aufgabe wie diese?

zu erreichen
War es hilfreich?

Lösung

var allItems = (new [] {"Table", "Chair", "TV", "Fireplace", "Bed"});
var hasItems = (new [] {"Table", "Chair"});

var hasList = hasItems.ToList();
var needsList = allItems.Except(hasItems).ToList();

Andere Tipps

var allList = (new [] {"Table", "Chair", "TV", "Fireplace", "Bed"}).ToList();
var hasList = (new [] {"Table", "Chair"}).ToList();

var hasSet = new HashSet<string>(hasList);
var needsList = allList.Where(i => !hasList.Contains(i)).ToList();

Das ist ~ die schnellste Lösung (zumindest in O-Notation ).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top