作为模拟IQueryable的提供者放置什么

时间:2010-02-11 17:13:09

标签: c# linq pex-and-moles moles

我正在使用Moles并模拟System.Data.Linq.Table。

我让它构建得很好,但是当我使用它时,它需要IQueryable。提供程序也可以被模拟(moled)。

我只是想让它使用普通的Linq To Objects。知道那会是什么吗?

以下是我可以使用的语法:

MTable<User> userTable = new System.Data.Linq.Moles.MTable<User>();
userTable.Bind(new List<User> { UserObjectHelper.TestUser() });

// this is the line that needs help
MolesDelegates.Func<IQueryProvider> provider = //Insert provider here!
                                                             ^
userTable.ProviderSystemLinqIQueryableget = provider         |
                                                             |
                                                             | 
what can I put here? ----------------------------------------+

2 个答案:

答案 0 :(得分:7)

最简单的是List<T>,可以通过IQueryable<T>用作.AsQueryable()

MolesDelegates.Func<IQueryProvider> provider = () => userLinqList.AsQueryable().Provider;

这就是我在内存数据库中用来模拟Linq2Sql的内容。简单而优雅。

答案 1 :(得分:0)

简单的解决方案是将list.AsQueryable()绑定到表中。 IQueryable方法将自动重新路由到列表中。