linq - 拾取两个版本的 System.Linq 导致的不明确调用

标签 linq reference orchardcms method-invocation ambiguous-call

我有以下代码,它在 .Any( 之后的 lambda 表达式下显示一条波浪形的红线,因为 System.Linq 版本 3.5 和 4.0 之间存在“模糊调用”-如何强制它使用特定版本?

它编译并运行良好。

string[] allowedExtensions = { "PNG", "JPG", "JPEG", "GIF" };
string fileExtension = (Path.GetExtension(postedFile.FileName) ?? "NULL").ToUpper().TrimStart(new[] { '.' });

if (this.MediaService.FileAllowed(postedFile) 
    && allowedExtensions.Any(e => e == fileExtension))
{ ... }

更新 :

我现在检查了整个解决方案中的所有 (60) 个项目,并且所有对 System.dll 和 System.Core.dll 的引用都是 4.0 版 - 我真的不明白它从哪里获得对 3.5 的引用。

最佳答案

在 ReSharper 在我使用 Linq 表达式但尚未导入“System.Linq”的文件中提供“引用 System.Core”和“导入 System.Linq”后,我遇到了这个问题。当我执行 ReSharper 命令时,我得到了一些错误,它的一部分失败了。然后我项目中的所有 Linq 表达式在 System.Core 3.5 和 4.0 之间都是模棱两可的。查看我所有的 System 和 System.Core 引用资料,它们都是 4.0。删除对 System.Core (4.0) 的引用导致歧义错误消失,并使 System.Core 从该项目的引用列表中消失。当我回去重新添加 System.Core 时,虽然它没有出现在解决方案资源管理器的引用列表中,但在“添加对”对话框中的引用进行了检查。尝试在此处取消选中它然后重新检查它导致 System.Core 已被我的项目引用的错误。我仍在修复错误,所以我不知道这是否会影响构建过程。

关于linq - 拾取两个版本的 System.Linq 导致的不明确调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9297747/

相关文章:

c# - LINQ to SQL - 从 X WHERE X = "1"选择 Y

c++ - C++ 中的对象变量保存值,而不是对象引用

javascript - 函数按值返回函数

asp.net-mvc-3 - "Add Area"未出现在 Visual Studio 2010 Ultimate 中

asp.net-mvc-3 - 是否可以在 Orchard CMS 中使用标准 ASP.NET MVC Unobtrusive Validation?

c# - LINQ 查询获取具有指定类型成员的所有实体

c# - Linq 检查字符串数组在其他数组中是否部分匹配

c# - 通过 DbLinq 使用 Linq to SQLite 创建记录

c# - 在两个 asp.net mvc 应用程序之间共享 cookie

c++ - 返回对指针的引用 - C++