在Mono内对System.Linq.Enumerable.Max的模糊调用
本文关键字:Max 模糊 调用 Enumerable Linq Mono 内对 System | 更新日期: 2023-09-27 18:09:26
当使用lambda表达式从以下代码中查找最大Key值时,我在使用gmcs在Unix系统上编译时得到以下编译错误:
List<KeyValuePair<int, RunnerBase>> lsFinishOrder = new List<KeyValuePair<int, RunnerBase>>();
...fill out List...
iMaxPlace = lsFinishOrder.Max(p => p.Key);
代码在Windows机器上编译得很好,并且在执行时按预期执行,只有当我试图在Linux上编译时才会出现问题。
错误CS0121:调用在以下方法之间是二义性的属性:"System.Linq.Enumerable.Max<System.Collections.Generic.KeyValuePair<>祝辞(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<>在,System.Func
<int,Pathfinder.RunnerBase>, long>)' 和"System.Linq.Enumerable.Max<System.Collections.Generic.KeyValuePair<>祝辞(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<>在,System.Func
<int,Pathfinder.RunnerBase>, int>)' /usr/lib/mono/gac/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll(与先前错误相关的符号位置)
任何想法都是受欢迎的,因为我已经尝试了很多不同的方法,我想知道我是否找错了地方。我的windows版本的目标是。net 3.5
这看起来像是Mono编译器中的一个bug。
试试这个来帮助它:
iMaxPlace = lsFinishOrder.Max((Func<KeyValuePair<int, RunnerBase>, int>)(p => p.Key));