我试图覆盖自定义where子句的行为来查看索引。
所以我有一个自定义集合,其中包含自定义where方法。
片断..
public IndexedDbSet<T> : IdbSet<T> // IdbSet<T> : IQueryable<T>
{
public IEnumerable<T> Where ( Expression<Func<T,bool>> predicate) `
{
}
}
我称之为var blastNum = collection.Where( x => x.SiteId ==siteId).ToList();
然而,当我在集合上运行where时,它会调用corelib中的扩展方法。
我也尝试过返回IQueryable ..
预计会出现这种情况吗?还有更好的方法吗?
注意我有一个现有的代码库,可以为数据库执行大量的LINQ,但是我需要它去内存和1M +记录暴力需要太长时间。 它是一个Windows应用商店应用。
注意与接口上的优先顺序不一样,因为我直接调用它而不是接口,它的LINQ可能会改变行为。
答案 0 :(得分:-1)
根据您提供的详细信息,我认为您所在的课程位于&#39; Where&#39;方法有&#39; System.Linq&#39;使用中的命名空间。因此,它调用了“&#39; Where&#39; .NET Framework中的方法,而不是来自您的类。
如果您不需要System.Linq命名空间,请将其删除以解决问题或更改您的&#39; Where&#39; static的方法和接受对象作为参数之一如下,并在该对象上应用您的谓词
public static IEnumerable<T> Where ( customCollection instance, Expression<Func<T,bool>> predicate)