[Mono-bugs] [Bug 482996] New: Bad type inferencing in LINQ expression

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri Mar 6 14:53:32 EST 2009


           Summary: Bad type inferencing in LINQ expression
    Classification: Mono
           Product: Mono: Compilers
           Version: SVN
          Platform: x86-64
        OS/Version: openSUSE 11.1
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: C#
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: jpryor at novell.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---

The summary may be bad; not sure how to summarize this other than with code.

In short, this code fails to compile:

  using System.Linq;
  public partial class Product
    public int CategoryID;
    public decimal UnitPrice;
  class MainClass
    public static void Main(string[] args)
      Product[] products = new[]{
        new Product { CategoryID = 1, UnitPrice = 1m },
        new Product { CategoryID = 2, UnitPrice = 2m },
        new Product { CategoryID = 3, UnitPrice = 3m },
        new Product { CategoryID = 4, UnitPrice = 4m },
        new Product { CategoryID = 5, UnitPrice = 5m },
      var categories = from p in products
        group p by p.CategoryID into g
        select new {
          ExpensiveProducts = from p2 in g
            where (p2.UnitPrice > g.Average(p3 => p3.UnitPrice))
            select p2

It generates the compiler error:

  b.cs(23,23): error CS0019: Operator `>' cannot be applied to operands of type 
  `decimal' and `double'

which is on the line:

            where (p2.UnitPrice > g.Average(p3 => p3.UnitPrice))

I have no idea why it's trying to use `double' in the first place; my guess is
bad type inferencing.

The above code compiles under .NET CSC, and this error prevents the DbLinq unit
tests from building under mono.

Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.

More information about the mono-bugs mailing list