Каков наиболее эффективный способ сравнения / сортировки элементов из двух массивов? - PullRequest
0 голосов
/ 17 июля 2009

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

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

Мне нужно перечислить предметы, уже находящиеся в доме, в списке «HAS», а также предметы, которых нет в доме, в списке «НЕОБХОДИМОСТИ». Мне кажется, что вложенные циклы «Для каждого» были бы началом решения этой проблемы, но я не совсем уверен, какой случай должен быть вложенным. Какой самый эффективный способ выполнить такую ​​задачу?

Ответы [ 2 ]

3 голосов
/ 17 июля 2009
var allItems = (new [] {"Table", "Chair", "TV", "Fireplace", "Bed"});
var hasItems = (new [] {"Table", "Chair"});

var hasList = hasItems.ToList();
var needsList = allItems.Except(hasItems).ToList();
1 голос
/ 17 июля 2009
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();

Это самое быстрое решение (по крайней мере, в big O нотации ).

...