[Mono-list] Custom LINQ query fails to compile - "type arguments cannot be inferred from usage"

m4dc4p jgbailey at gmail.com
Mon Jan 31 19:22:03 EST 2011

The below program fails to compile under Mono, but compiles fine with
Microsoft's C# compiler (4.0.30319.1). When I try to compile with dmcs, I

> dmcs /noconfig Program.cs /target:exe
> /reference:/usr/local/lib/mono/4.0/System.Core.dll

Program.cs(12,33): error CS0411: The type arguments for method
System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,bool>)'
cannot be inferred from the usage. Try specifying the type arguments
Program.cs(12,44): error CS0029: Cannot implicitly convert type `string' to

I am using the rewrite rules defined the C# 3.0 spec to implement a custom
LINQ translation. It doesn't seem to be anything too weird and I'm baffled
why Mono is complaining

Can anyone help? Thanks in advance!

=== cut here ====

using System;
using System.Linq;

namespace MonoLinq
    class Program
        static void Main(string[] args)
            var server = new Server<int>();
            var outputExpr1 = from item in server
                                where item.Is()
                                select item;

            var foo = server.Where(p => p.Is());

            Console.WriteLine("outputExpr1.GetType: {0}",
            Console.WriteLine("foo.GetType: {0}", foo.GetType().FullName);

    class Server<T>
        public Server()

        public string Where(Func<IDAccessor, string> idExpr)
            return String.Empty;

    class IDAccessor

    static class IDAccessorExt
        public static string Is(this IDAccessor __)
            return null;


View this message in context: http://mono.1490590.n4.nabble.com/Custom-LINQ-query-fails-to-compile-type-arguments-cannot-be-inferred-from-usage-tp3250221p3250221.html
Sent from the Mono - General mailing list archive at Nabble.com.

More information about the Mono-list mailing list