1

我有一个返回类型为Table的函数

此代码不起作用。我只想将 IEnumerable 返回为 Linq.Table **

 public static System.Data.Linq.Table<Products> GetProducts()
    {
        MyContext mc = new MyContext();

        Table<Products> ret = null;
        // Or   Table<Products> ret = mc.GetTable<Products>();

        ret.AttachAll<Products>(mc.GetTable<Products>()
                                  .OrderBy(p => p.ProductID).Take(1));

        return ret;
    }

现在我想将 IEnumerable 查询转换为 System.Data.Linq.Table。

(您可能会说我可以更改返回类型,但问题是这是否可能。我可以覆盖 GetTable() 之类的函数吗?)

4

1 回答 1

1

你不能。该类的Table<TEntity>存在是为了提供IQueryable<T>接口实现。里面没有任何实际的项目,它只是一个由DataContext公开的根,以便提供一个IQueryable<T>被解释、翻译成 SQL 然后发送到 SQL 服务器的实现。

如果您有一个IEnumerable<T>接口实现,那么您很可能已经拥有正在迭代的具体化结果集(或内存中的集合)。实现没有任何好处,IQueryable<T>因为没有什么可解释的;你想要的一切都已经在记忆中了。

也就是说,在实现中使用常规扩展方法/查询语法可能IEnumerable<T>比尝试将其放入Table<TEntity>.

于 2012-08-05T04:46:40.217 回答