将IEnumerable转换为System.Data.Linq.Table
本文关键字:Data Linq Table System IEnumerable 转换 | 更新日期: 2024-10-24 13:50:49
我有一个函数,其返回类型为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()之类的函数吗?)
你不能。Table<TEntity>
类的存在是为了提供IQueryable<T>
接口实现。其中没有任何实际的项,它只是DataContext
类公开的根,以便提供IQueryable<T>
实现,该实现被解释、翻译为SQL,然后发送到SQL服务器。
如果您有一个IEnumerable<T>
接口实现,则很可能已经有了正在迭代的物化结果集(或内存中的集合)。IQueryable<T>
实现没有任何好处,因为没有什么可解释的;你想要的一切都已经在记忆中了。
也就是说,只使用IEnumerable<T>
实现中的常规扩展方法/查询语法可能比尝试将其放入Table<TEntity>
中要好。