0

我有一个关于有效实施的问题。假设我有两个数组:

一个数组是房子里所有可能的物品:桌子、椅子、电视、壁炉、床

另一个是特定房屋中的一系列物品:桌子、电视、床

我还有两个列表框:

1. 房屋内物品的列表框 - “HAS”列表框
2. listbox items not in the house - “NEEDS”列表框

我需要在“HAS”列表框中列出已经在房子里的项目,以及在“NEEDS”列表框中列出不在房子里的项目。在我看来,嵌套的“For each”循环将是解决这个问题的开始,但我不确定哪种情况需要嵌套。完成这样的任务最有效的方法是什么?

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 回答