首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'Select‘的定义在CSharpScript.EvaluateAsync中不起作用

'Select‘的定义在CSharpScript.EvaluateAsync中不起作用
EN

Stack Overflow用户
提问于 2020-10-25 02:11:10
回答 1查看 431关注 0票数 2

我在运行这段代码时遇到了问题。尽管我认为我正在向ScriptOptions添加适当的引用,但CSharpScript.EvaluateAsync似乎无法理解Linq 'Select‘命令。这里的目标是使用EvaluateAsync来运行基于字符串的Linq查询。提前感谢您的帮助。

代码语言:javascript
复制
List<Dog> dogs = new List<Dog>();

dogs.Add(new Dog()
{ Name = "spike", Breed = "Poodle" });

dogs.Add(new Dog()
{ Name = "george", Breed = "Spaniel" });

dogs.Add(new Dog()
{ Name = "sammy", Breed = "Weimaraner" });


Console.WriteLine("Analyzing List");

// Func to return max string length of Breed Property in list of Dogs
int maxlen = dogs.Select(d => d.Breed.Trim().Length).OrderByDescending(d1 => d1).First();



// Recreated Func using Microsoft.CodeAnalysis.CSharp.Scripting.
var myLambda = "d => d.Select(d => d.Breed.Trim().Length).OrderByDescending(d1 => d1).First()";

Assembly[] assemblies = {
    typeof(Dog).Assembly,
    System.Reflection.Assembly.Load("System.Collections"),
    System.Reflection.Assembly.Load("System.Linq"),
    System.Reflection.Assembly.GetExecutingAssembly()
    
};

ScriptOptions options = ScriptOptions.Default.AddReferences(
             assemblies
            );

Func<List<Dog>, int> Dexprssn = await CSharpScript.EvaluateAsync<Func<List<Dog>, int>>(myLambda, options);
/*
   Error
        Microsoft.CodeAnalysis.Scripting.CompilationErrorException
        HResult=0x80131500
        Message=(1,8): error CS1061: 'Dog' does not contain a definition for 'Select' and no accessible 
            extension method 'Select' accepting a first argument of type 'Dog' could be found 
            (are you missing a using directive or an assembly reference?)
 */
EN

回答 1

Stack Overflow用户

发布于 2020-10-28 13:57:17

添加程序集作为引用是其中的一部分,但要添加任何“using指令”,则还应使用AddImports()

代码语言:javascript
复制
//..

ScriptOptions options = ScriptOptions.Default.AddReferences(assemblies);

options = options.AddImports("System.Linq");

//..
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64516558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档