从另一个项目中删除一个项目数组的最快方法是什么?

时间:2009-12-10 23:01:39

标签: c# .net arrays

我有两个字符串数组:

 string[] all = new string[]{"a", "b", "c", "d"}

 string[] taken = new string[]{"a", "b"}

我想生成一个新的字符串数组cd all - taken

.net 3.5如果没有手动循环并创建新列表,可以快速执行此操作吗?

3 个答案:

答案 0 :(得分:28)

var remains = all.Except(taken);

请注意,会返回一个数组。但是你需要问自己是否真的需要一个数组,或者IEnumerable是否更合适(提示:它几乎总是如此)。如果你真的需要一个数组,你可以调用.ToArray()来获取它。

在这种情况下,立即使用数组可能会有很大的性能优势。考虑一下“all”系列中的“a”到“d”,以及“take”系列中的“a”和“b”。此时,“遗留”变量尚未包含任何数据。相反,它是一个对象知道如何告诉你当你提出它时会有什么数据。如果您从未真正需要该变量,那么您从未做过任何工作来计算其中的项目。

答案 1 :(得分:6)

您正在使用LINQ Except,例如all.Except(taken)

答案 2 :(得分:5)

string[] result = all.Except<string>(taken).ToArray<string>();