Linq错误:"string []不包含'Except'的定义."

Avi*_*ohn 3 c# linq

这是我的代码:

    public static string[] SplitKeepSeparators(this string source, char[] keptSeparators, char[] disposableSeparators = null)
    {
        if (disposableSeparators == null)
        {
            disposableSeparators = new char[] { };
        }

        string separatorsString = string.Join("", keptSeparators.Concat(disposableSeparators));
        string[] substrings = Regex.Split(source, @"(?<=[" + separatorsString + "])");

        return substrings.Except(disposableSeparators); // error here
    }
Run Code Online (Sandbox Code Playgroud)

我得到编译时错误string[] does not contain a definition for 'Except' and the best extension method overload ... has some invalid arguments.

我已经包含using System.Linq在源文件的顶部.

怎么了?

Jon*_*eet 10

你的substrings变量是a string[],但是disposableSeparatorschar[]- 并且Except可以处理两个相同类型的序列.

要么disposableSeparators改为a string[],要么使用类似的东西:

return substrings.Except(disposableSeparators.Select(x => x.ToString())
                 .ToArray();
Run Code Online (Sandbox Code Playgroud)

注意调用ToArray()- Except只返回一个IEnumerable<T>,而声明你的方法返回一个string[].