Bug 42057

Summary: error CS0121: The call is ambiguous
Product: [Mono] Compilers Reporter: Łukasz Domeradzki <archipl33>
Component: C#Assignee: Marek Safar <masafa>
Severity: normal CC: mono-bugs+mono
Priority: ---    
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Tags: Is this bug a regression?: ---
Last known good build:

Description Łukasz Domeradzki 2016-06-22 02:35:55 UTC
error CS0121: The call is ambiguous between the following methods or properties: `System.Linq.Enumerable.Sum<System.Tuple<System.DateTime,byte>>(this System.Collections.Generic.IEnumerable<System.Tuple<System.DateTime,byte>>, System.Func<System.Tuple<System.DateTime,byte>,int>)' and `System.Linq.Enumerable.Sum<System.Tuple<System.DateTime,byte>>(this System.Collections.Generic.IEnumerable<System.Tuple<System.DateTime,byte>>, System.Func<System.Tuple<System.DateTime,byte>,decimal?>)'

The following compiles perfectly in Visual Studio (2015):

HashSet<Tuple<DateTime, byte>> giveaways = MySQL.GetCreatedGiveawaysDatesValues(1234); // Or just new...
Tuple<DateTime, byte> targetGiveaway = MySQL.GetTargetGiveaway(1234); // Or just new...

ushort calculatedValue = (ushort) giveaways.Where(giveaway => targetGiveaway.Item1.Subtract(giveaway.Item1).TotalDays < 60.8737).Sum(giveaway => giveaway.Item2);

Of course, the issue is in the last line, I included types for reproducable case. It compiles fine under VS. Latest Mono master from GitHub.
Comment 1 Marek Safar 2016-07-04 13:12:55 UTC
Fixed in master and Mono 4.5.1