0

効率的な実装について質問があります。2つの配列があるとしましょう:

1つの配列は家のすべての可能なアイテムです:テーブル、椅子、テレビ、暖炉、ベッド

もう1つは、特定の家にある一連のアイテムです。テーブル、テレビ、ベッド

また、2つのリストボックスがあります。

1.家の中のアイテムのリストボックス-「HAS」リストボックス
2.家にないリストボックスアイテム-「NEEDS」リストボックス

「HAS」リストボックスにすでに家にあるアイテムと、「NEEDS」リストボックスに家にないアイテムをリストする必要があります。ネストされた「Foreach」ループはこの問題を解決するための出発点になるように思われますが、どちらのケースをネストする必要があるかは正確にはわかりません。このようなタスクを実行するための最も効率的な方法は何ですか?

4

2 に答える 2

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

var hasList = hasItems.ToList();
var needsList = allItems.Except(hasItems).ToList();
于 2009-07-16T21:38:38.777 に答える
1
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表記では)。

于 2009-07-16T20:58:06.020 に答える