有类似的问题-到目前为止,它们都没有帮助。
我在打电话:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
然后在我的代码的一部分中,VS指出LINQ方法(.Last()和.Max())中的错误。我将鼠标悬停在.Max()上。错误提示:
以下方法或属性之间的调用不明确:'System.Linq.Enumerable.Max(System.Collections.Generic.IEnumerable
)'和'System.Linq.Enumerable.Max(System.Collections.Generic .IEnumerable )'
我尝试重新安装所有参考和软件包,然后重新启动VS,IIS(这是一个网站)。 VS识别System.Linq,所以这不是问题。...
我不知道为什么这是所有突然的抛出错误。
答案 0 :(得分:1)
如果您在代码中的任何地方或被引用的某人中有人实施了自己的IEnumerable<T>
扩展方法,并且不了解得更好,并使用了与框架提供的名称空间相同的名称空间,则会发生这种情况:
Alpha程序集在IEnumerable<T>
名称空间中滚动其自己的System.Linq
扩展方法:
namespace System.Linq {
public static class MyEnumerable {
public static T Max<T>(this IEnumerable<T> source) { //...
}
//...
}
}
装配体Charlie认为Alpha之所以出色,是因为它提供了其他功能,并完全忽略了Alpha所隐藏的令人讨厌的惊喜。
using System.Linq; //woops
namespace Charlie {
class C {
void Foo() {
var l = new List<object>() { 1, 2, 3 };
var m = l.Max() /*compile time error. Ambiguous call*/ } }
}
我不知道这是否可能是您的情况,但可能是这样。另一个潜在的候选者可能是版本冲突,但是我不确定VS是否有可能。我从未遇到过与System.*
名称空间类似的情况。