web-dev-qa-db-fra.com

Comment utiliser LINQ en mono?

Je ne peux pas faire fonctionner System.Linq (alias LINQ to Objects). J'utilise MonoDevelop 2.2.1 dans Ubuntu 10 Lucid Lynx avec Mono 2.4.4.

Ils annoncent dans leur site qu'ils ont implémenté LINQ, mais je ne trouve même pas Enumerable.Range Ou ToArray(). Qu'est-ce qui ne va pas?

46
Jader Dias

Je suppose que ce que vous devez faire est:

  1. Dans les options de votre projet, réglez "Runtime version" sur "Mono/.Net 3.5"
  2. Ajouter une référence au package System.Core (références de clic droit dans l'Explorateur de solutions)
  3. Ajoutez "using System.Linq" à votre module

après cela, votre code devrait compiler et exécuter

j'espère que cela vous aide,

79
serge_gubenko

Utilisez-vous le compilateur gmcs? mcs ne semble pas compiler de code contenant 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

Pour compiler avec gmcs, effectuez les instructions suivantes comme décrit par la FAQ MonoDevelop :

Puis-je compiler mon projet avec gmcs?

Oui. Faites un clic droit sur votre projet, sélectionnez "Options" -> "Runtime" et sélectionnez "2.0" dans la liste déroulante.

4
Mark Rushakoff

Que voulez-vous dire lorsque vous dites "ne trouve pas"? Intellisense? La plupart des méthodes linq sont des méthodes d'extension, et monodéveloppement peut ne pas prendre en charge celles dans intellisense. Dans ce cas, vous pouvez toujours les utiliser et votre code devrait être compilé, il n'est tout simplement pas dans les listes déroulantes.

À propos des méthodes d'extension

1
Tim Hoolihan