如何在 Mono 中使用 LINQ?

Posted

技术标签:

【中文标题】如何在 Mono 中使用 LINQ?【英文标题】:How to use LINQ in Mono? 【发布时间】:2011-02-12 16:20:15 【问题描述】:

我无法使 System.Linq(又名 LINQ to Objects)工作。我在带有 Mono 2.4.4 的 Ubuntu 10 Lucid Lynx 中运行 MonoDevelop 2.2.1。

他们在他们的网站上宣传他们实施了 LINQ,但我什至找不到 Enumerable.RangeToArray()。怎么了?

【问题讨论】:

【参考方案1】:

我猜你需要做的是:

    在您的项目选项中,将“运行时版本”设置为“Mono/.Net 3.5” 添加对 System.Core 包的引用(在解决方案资源管理器中右键单击引用) 将“使用 System.Linq”添加到您的模块中

之后你的代码应该编译并执行

希望这有帮助,问候

【讨论】:

我只需要添加对 System.Core 的引用 你在哪里设置运行时版本?我在项目设置中没有看到这样的选项 奇怪的是,它可以在不引用 System.Core 的情况下为我编译和运行,但我没有智能感知,并且 using 语句的“Linq”以红色突出显示。添加 System.Core 解决了这个问题。【参考方案2】:

您使用的是gmcs 编译器吗? mcs 似乎无法编译包含 Linq 的代码。

$ cat a.cs
using System;
using System.Linq;

class Test

    static void Main()
    
        foreach (var i in new int[]  1, 2, 3, 4, 5.Where(n => n % 2 == 0))
        
            Console.WriteLine(i);
        
    

$ gmcs a.cs
$ ./a.exe
2
4

要使用gmcs 进行编译,请按照the MonoDevelop FAQ 的说明执行以下指令:

我可以用 gmcs 编译我的项目吗?

是的。右键单击您的项目,选择“选项”->“运行时”,然后从下拉列表中选择“2.0”。

【讨论】:

【参考方案3】:

你说“找不到”是什么意思?智能感知?很多 linq 方法是扩展方法,monodevelop 可能不支持 intellisense 中的方法。在这种情况下,您仍然可以使用它们并且您的代码应该编译,它只是不在下拉列表中。

About extension methods

【讨论】:

以上是关于如何在 Mono 中使用 LINQ?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Visual Studio 2017构建Gtk#/ Mono应用程序

初学者如何在 Linux 中开始使用 Mono?

如何在 Reactor 中使用 Mono 的内容

Mono:如何在 Makefile.am 中添加 DLL 引用?

如何在 Mono for android 中使用 Runnable

嵌入式 Mono:如何在不同线程上使用“mono_runtime_invoke”