C# CSharpCodeProvider“;“字符串”;不包含“的定义”;选择";。CSCC与System.Linq存在问题

C# CSharpCodeProvider“;“字符串”;不包含“的定义”;选择";。CSCC与System.Linq存在问题,c#,.net,.net-4.0,csharpcodeprovider,C#,.net,.net 4.0,Csharpcodeprovider,我正在尝试使用CSharpCodeProvider编译一段代码 错误是: c:\...\crust.cs(551,48) : error CS1061: 'string' does not contain a definition for 'Select' and no extension method 'Select' accepting a first argument of type 'string' could be found (are you missing a using dire

我正在尝试使用CSharpCodeProvider编译一段代码

错误是:

c:\...\crust.cs(551,48) : error CS1061: 'string' does not contain a definition for 'Select' and no extension method 'Select' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)        
正在编译的代码是:

using System;
...
using System.Linq;

...

          return new string(str.Substring(1).Select(character => (char)((character - 54545) ^ key)).ToArray());
...
编译源代码的代码如下所示:

...
                String exeName = String.Format("NAME.exe");

                CompilerParameters cp = new CompilerParameters
                {
                    GenerateExecutable = true,
                    GenerateInMemory = false,
                    OutputAssembly = "NAME.exe",
                    CompilerOptions = "/target:exe /platform:x64"
                };

                cp.ReferencedAssemblies.Add("System.dll");
                ...
                cp.ReferencedAssemblies.Add("System.Linq.dll");
                cp.GenerateExecutable = true;
                cp.OutputAssembly = exeName;
                cp.GenerateInMemory = false;
                cp.TreatWarningsAsErrors = false;
                CompilerResults cr = provider.CompileAssemblyFromFile(cp,
                    sourceName);
...
没有其他system.linq方法可以工作

注: 编译器是64位的 源代码正在编译为64位 编译器位于.NETFramework 4.0中
源代码正在编译到.net 4.0

是否检查了CSharpCodeProvider的Linq依赖版本?可能它的版本不接受第一个参数为string的Select方法