C# Mono内对System.Linq.Enumerable.Max的调用不明确
使用lambda表达式从以下代码中查找最大键值时,在使用gmcs的Unix系统上进行编译时,我遇到以下编译错误:C# Mono内对System.Linq.Enumerable.Max的调用不明确,c#,linq,mono,C#,Linq,Mono,使用lambda表达式从以下代码中查找最大键值时,在使用gmcs的Unix系统上进行编译时,我遇到以下编译错误: List<KeyValuePair<int, RunnerBase>> lsFinishOrder = new List<KeyValuePair<int, RunnerBase>>(); ...fill out List... iMaxPlace = lsFinishOrder.Max(p => p.Key); List
List<KeyValuePair<int, RunnerBase>> lsFinishOrder = new List<KeyValuePair<int, RunnerBase>>();
...fill out List...
iMaxPlace = lsFinishOrder.Max(p => p.Key);
List lsFinishOrder=new List();
…填写列表。。。
iMaxPlace=lsFinishOrder.Max(p=>p.Key);
这段代码在Windows机器上可以很好地编译,并且在执行时会像预期的那样执行。只有当我尝试在Linux上编译它时,问题才会出现
错误CS0121:以下方法或方法之间的调用不明确
特性:
`System.Linq.Enumerable.Max(System.Collections.Generic.IEnumerable,
System.Func)'
及
`System.Linq.Enumerable.Max(System.Collections.Generic.IEnumerable,
System.Func)'
/usr/lib/mono/gac/System.Core/3.5.0.0_uub77a5c561934e089/System.Core.dll
(与先前错误相关的符号位置)
任何想法都是受欢迎的,因为我已经尝试了很多不同的方法,我想知道我是不是找错了地方。我的windows版本的目标是.Net 3.5。这看起来像是Mono编译器中的一个bug 请尝试以下帮助:
iMaxPlace = lsFinishOrder.Max((Func<KeyValuePair<int, RunnerBase>, int>)(p => p.Key));
iMaxPlace=lsFinishOrder.Max((Func)(p=>p.Key));
我清理了错误消息,使其更具可读性,并在似乎导致歧义的long和int周围插入了**。太棒了,我尝试了,Mono对此非常满意!非常感谢你的帮助!(很抱歉,当你点击enter it posts而不是移动到下一行时,我发表了2条评论)。