} // GetOpenPropertyValue public IQueryable GetQueryRootForResourceSet(DSP.ResourceSet container) { List <RowEntityType> list = EntitySetDictionary[container.Name]; IQueryable <RowEntityType> realQueryable = list.AsQueryable(); NonClrQueryProvider provider = new NonClrQueryProvider(realQueryable.Provider, this); NonClrQueryable <RowEntityType> queryable = new NonClrQueryable <RowEntityType>(realQueryable, provider); if (container.ResourceType.InstanceType == typeof(RowEntityType)) { return(queryable); } else { MethodInfo castMethod = typeof(Queryable).GetMethod("Cast", BindingFlags.Static | BindingFlags.Public); castMethod = castMethod.MakeGenericMethod(container.ResourceType.InstanceType); object newQueryable = castMethod.Invoke(null, new object[] { queryable }); return(newQueryable as IQueryable); } } // GetQueryRootForResourceSet
public NonClrQueryable(IQueryable queryable, NonClrQueryProvider provider) { this.queryable = queryable; this.provider = provider; }