【问题标题】:Ambiguous call between within Mono for System.Linq.Enumerable.MaxMono 中 System.Linq.Enumerable.Max 之间的模糊调用
【发布时间】:2014-06-18 15:35:02
【问题描述】:

当使用 lambda 表达式从以下代码中查找最大 Key 值时,在 Unix 系统上使用 gmcs 进行编译时出现以下编译错误:

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.IEnumerable>, System.Func, long >)'

和 `System.Linq.Enumerable.Max>(System.Collections.Generic.IEnumerable>, System.Func, int >)'

/usr/lib/mono/gac/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll (与先前错误相关的符号位置)

欢迎任何想法,因为我尝试了很多不同的方法,我想知道我是否没有找错地方。我的目标是 .Net 3.5 在我的 Windows 版本上。

【问题讨论】:

  • 我清理了错误消息以使其更具可读性,并在 longint 周围插入了 ** 似乎造成歧义。

标签: c# linq mono


【解决方案1】:

这看起来像是 Mono 编译器中的一个错误。

试试这个来帮助它:

iMaxPlace = lsFinishOrder.Max((Func<KeyValuePair<int, RunnerBase>, int>)(p => p.Key));

【讨论】:

  • 太棒了,我已经尝试过了,Mono 对此非常满意!
  • 非常感谢您的帮助! (抱歉,当您点击 Enter it 时我发布了 2 个 cmets,而不是移动到下一行)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多