Tag: 过载解析

方法重载解析如何工作(LINQ Where扩展方法)?

如果我有一个类型为IQueryable的变量,我有四个扩展方法,用于命名空间Systm.Linq Where : public static IQueryable Where(this IQueryable source, Expression<Func> predicate); public static IQueryable Where(this IQueryable source, Expression<Func> predicate); public static IEnumerable Where(this IEnumerable source, Func predicate); public static IEnumerable Where(this IEnumerable source, Func predicate); (最后两个因为IQueryableinheritance自IEnumerable 。) 如果我使用ObjectQuery类型的变量(在命名空间System.Data.Objects ),我有五个可用的重载,即上面的四个(因为ObjectQuery实现了IQueryable和IEnumerable等等接口)以及此类的实例方法: public ObjectQuery Where(string predicate, params ObjectParameter[] parameters); 如果我在使用IQueryable或ObjectQuery执行相同的编程错误, IQueryable出现非常不同的编译器错误。 这是一个示例程序(VS2010 SP1中的标准C#控制台应用程序模板+ System.Data.Entity.dll程序集添加到项目引用中,编译器错误在以下四个示例的注释中): using System.Data.Objects; using System.Linq; […]