将Linq2SQL与自定义SQL相结合

时间:2010-09-07 14:27:46

标签: c# linq-to-sql

从自定义SQL查询中我想得到一个IQueryable(我有我的理由):

类似的东西:

IQueryable<Client> query = Foo<Client>("SELECT * FROM Clients WHERE ...");

query.Where(e => e.Active==true).Skip(10).Take(10); //etc.

有没有办法实现Foo?

我找到ExecuteQuery<T>(...).AsQueryable(),但这不起作用,因为它加载了所有记录。

4 个答案:

答案 0 :(得分:2)

您可以将这部分查询放在视图中吗?

SELECT * FROM Clients...

然后您可以使用LINQ WhereSkip/Take

var results = db.MyViews.Where(e => e.Active == true).Skip(10).Take(10);

答案 1 :(得分:1)

可以实现此功能,但您必须解析SQL文本并查找映射以获取正确的类型(例如,从 Clients 到{{1 }})。没有用于从SQL自动生成Client的内置工具。

答案 2 :(得分:1)

从我的观点来看,最好的方法是在这种情况下实现自己的包装继承IQueryable。在GetEnumerator()中,您可以实现逐行结果读取,或者只是从您自己的GetEnumerator()方法返回ExecuteQuery(...)。GetEnumerator()。

答案 3 :(得分:1)