我尝试了一些使用LINQ动态查询的方法 - LINQKit和 LINQ动态查询库。我不喜欢第二个,因为它会杀死LINQ的想法 - 能够在编译时检查查询。而对于LINQKit,我没有为我的场景找到一个好例子。我也不喜欢过度使用反射。LINQ和带有分页和LINQ2SQL的动态查询
我的场景如下。我有一个正在做业务逻辑和DAL逻辑的Web服务。 webforms应用程序是分开的。我有一些网页带有用户想要过滤的每个字段的复选框,还有一个用于输入每个过滤器值的文本框。我的web服务有一个方法GetByFilter,我通过一些List。 QueryObject是一个包含字符串:filedName,object:fieldValue的类。
然后我的webservice接收查询对象列表,现在出现了一个大问题:如果字段数和过滤器值可能会有所不同,如何将其转换为LINQ查询?
更糟的是 - 我不使用LINQ2SQL,但我用仓库一些自定义DAL如果需要的话可以返回IQUERY(像这样的: http://msdn.microsoft.com/en-us/magazine/dd569757.aspx 滚动到库)。
我知道我可以使用寻呼与LINQ2SQL: VAR PagedData = query.Skip((iPageNum - 1)* iPageSize)。取(iPageSize);
那么我怎么能从LINQ到我的底层DAL实现中获得动态查询参数(以及iPageNum和iPageSize),以便以特定数据提供者的方式执行这些查询?也许我必须实现我的DAL作为一些LINQ数据提供者(我不知道该怎么做)?
问题是 - 我不想依赖于LINQ2SQL(然后我可以将我的Repositories作为LINQ2SQL的包装器来实现),但是同时我想在我的DAL外部的任何地方都有LINQ查询功能。可能吗?
感谢的,事实证明,自定义数据提供者不像我想的那么复杂。 – JustAMartin 2009-11-26 11:42:47