Каков наиболее эффективный способ сравнения / сортировки элементов из двух массивов?

StackOverflow https://stackoverflow.com/questions/1140220

Вопрос

У меня есть вопрос по поводу эффективной реализации.Допустим, у меня есть два массива:

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

У меня также есть два списка:

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

Мне нужно перечислить предметы, которые уже есть в доме, в списке "ЕСТЬ", а также предметы, которых НЕТ в доме, в списке "ПОТРЕБНОСТИ".Мне кажется, что вложенные циклы "Для каждого" были бы началом решения этой проблемы, но я не совсем уверен, какой случай должен быть вложенным.Каков наиболее эффективный способ выполнения подобной задачи?

Это было полезно?

Решение

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

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

Другие советы

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();

Это ~ самое быстрое решение (по крайней мере, в обозначение большой буквы O).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top