小编Kev*_*vin的帖子

解析字符串C#LINQ表达式

我试图在这里进行一些非常动态的查询 - 最好不要在运行时调用编译器.

我有一个包含LINQ表达式的字符串,例如

var s = "from a in queryable where a.Type == 1 select a";
Run Code Online (Sandbox Code Playgroud)

如何从中获得由此产生的IQueryable或表达式?

我见过LINQPad和RavenDb都这样做,所以我确信有一种方法,我还没有找到它.

c# linq

15
推荐指数
1
解决办法
1万
查看次数

ArrayList BinarySearch

我正忙着准备MCTS 70-536考试,根据考试书(Microsoft Press - .NET Framework - 应用程序开发基础自学训练套件第2版),此代码示例:

ArrayList al = new ArrayList();
al.AddRange(new string[] { "Hello", "world", "this", "is", "a", "test" });
Console.WriteLine(al.BinarySearch("this"));
Run Code Online (Sandbox Code Playgroud)

将值'2'输出到控制台,因为项'this'位于索引2.同意这是我运行该代码时得到的输出.

但是,如果我跑

Console.WriteLine(al.BinarySearch("world"));
Run Code Online (Sandbox Code Playgroud)

我希望在控制台中获得值1,因为'world'将在索引1,但是我得到值-7?

谁能解释一下这是如何工作的?

谢谢

c# collections arraylist

10
推荐指数
1
解决办法
3101
查看次数

将变量注入 Mono.CSharp.Evaluator(运行时从字符串编译 LINQ 查询)

我正在使用 Mono.CSharp 库来发出代码。在关于 SO (http://stackoverflow.com/questions/3407318/mono-compiler-as-a-service-mcs) 的另一个问题之后,我设法让 Mono.CSharp 在 Microsoft CLR 上正确评估。

为了在我的应用程序中增加灵活性,我希望能够在运行时自定义查询 - 通过允许用户提供 LINQ 查询作为字符串,该字符串在执行时被解析并命中数据库。

鉴于此基本代码片段:

IQueryable<Contact> contacts = GetContacts();
string query = "from contact in contacts
                where contact.Name == \"name\"
                select contact";
var queryableResult = Mono.CSharp.Evaluator.Evaluate(query);
Run Code Online (Sandbox Code Playgroud)

如何将联系人变量“注入”到 Mono.CSharp.Evaluator 中以作为查询的一部分进行评估?我会以正确的方式解决这个问题吗?最后,我需要结果表达式或来自“查询”字符串的 IQueryable。

c# linq expression-trees

5
推荐指数
1
解决办法
2775
查看次数

标签 统计

c# ×3

linq ×2

arraylist ×1

collections ×1

expression-trees ×1