2011-05-12 58 views
0

行和选择的愿望列考虑这种情况:如何筛选来自客户端

我有我写的服务,这回我clients.In我的节目,我在不同类型的使用这种数据的引用数据。

我想从客户端以动态的方式得到我想要的数据库。

我想用这样的代码:

public List<TResult> FindAll<T, TResult>(Func<T, bool> exp, Func<T, TResult> selector, int PageSize) where TResult : class 
{   
} 

问题是我不能宣布我的服务接口为通用的,我不能使用这样的代码:

public List<TResult> FindAll<Order, TResult>(Func<Order, bool> exp, Func<Order, TResult> selector, int PageSize) where TResult : class 
{ 
    using (DataClasses1DataContext dc = new DataClasses1DataContext()) 
    { 
     return dc.Orders.Where(exp).Select<Order, TResult>(selector).ToList<TResult>(); 
    } 
} 

因为:

  1. 函数中的顺序充当参数而不是顺序类。

  2. 我TResult没有在服务声明

我怎样才能做到这一点?非常感谢。

+0

EF或LINQ to SQL?选一个。 – abatishchev 2011-05-12 19:41:23

+0

你能写两个答案吗? – Arian 2011-05-12 19:44:43

回答

1

你不能使你的方法是通用的,你不能通过委托作为参数,你可能无法传递表达式树作为参数,因为我认为它默认情况下是不可序列化的。您应该使用一些已经为您执行此操作的API - 请检查WCF Data ServicesExpression Tree Serialization