I have two arrays of strings:
string[] all = new string[]{"a", "b", "c", "d"}
string[] taken = new string[]{"a", "b"}
I want 开发者_Go百科to generate a new string array with c
and d
which is all - taken
.
Any quick way in .net 3.5
to do this without a manual loop and creating new lists?
var remains = all.Except(taken);
Note that this does not return an array. But you need to ask yourself if you really need an array or if IEnumerable is more appropriate (hint: it almost always is). If you really need an array, you can just call .ToArray()
to get it.
In this case, there may be a big performance advantage to not using an array right away. Consider you have "a" through "d" in your "all" collection, and "a" and "b" in your "taken" collection. At this point, the "remains" variable doesn't contain any data yet. Instead, it's an object that knows how to tell you what data will be there when you ask it. If you never actually need that variable, you never did any work to calculate what items belong in it.
You are using LINQ Except
for it, like all.Except(taken)
.
string[] result = all.Except<string>(taken).ToArray<string>();
精彩评论