Как использовать LINQ в Mono? - PullRequest
46 голосов
/ 27 апреля 2010

Я не могу заставить System.Linq (он же LINQ to Objects) работать. Я использую MonoDevelop 2.2.1 в Ubuntu 10 Lucid Lynx с Mono 2.4.4.

Они рекламируют на своем сайте, что внедрили LINQ, но я даже не могу найти Enumerable.Range или ToArray(). Что не так?

Ответы [ 3 ]

79 голосов
/ 27 апреля 2010

Я думаю, что вам нужно будет сделать:

  1. В настройках вашего проекта установите для "Runtime version" значение "Mono / .Net 3.5"
  2. Добавить ссылку на пакет System.Core (ссылки правой кнопкой мыши в обозревателе решений)
  3. Добавьте «using System.Linq» в ваш модуль

после этого ваш код должен скомпилироваться и выполнить

надеюсь, это поможет, с уважением

4 голосов
/ 27 апреля 2010

Вы используете 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, выполните следующие инструкции, как описано в FAQ по MonoDevelop :

Могу ли я скомпилировать свой проект с помощью gmcs?

Да. Щелкните правой кнопкой мыши свой проект, выберите «Параметры» -> «Время выполнения» и выберите «2.0» в раскрывающемся списке.

1 голос
/ 27 апреля 2010

Что вы имеете в виду, когда говорите «не могу найти»? Intellisense? Многие из методов linq являются методами расширения, и monodevelop может не поддерживать методы в intellisense. В этом случае вы все равно можете их использовать, и ваш код должен скомпилироваться, но его нет в выпадающих списках.

О методах расширения

...