如何过滤行并从客户端选择所需的列

时间:2011-05-12 19:23:58

标签: c# .net linq entity-framework linq-to-sql

考虑这种情况:

我有一个参考数据,我写服务将其返回给我的客户。在我的程序中,我使用不同类型的数据。

我希望从客户端以动态方式从数据库中获得我想要的内容。

我想使用这样的代码:

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未在服务中声明

  3. 我怎么能这样做?非常感谢。

1 个答案:

答案 0 :(得分:1)

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