我想设计我的应用程序来执行以下操作: 1.从客户端向某个服务器上的某个WCF服务发送LINQ查询 2.该服务器接收该LINQ查询并执行linq-to-object搜索 3.然后服务器返回结果。
这可能吗?如果是这样的话?我找不到关于这个主题的任何教程。
注意:我不想将方法调用发送到WCF服务,然后该服务执行基础LINQ查询。我希望WCF服务接收某种形式的自定义LINQ查询并进行计算。
答案 0 :(得分:1)
Linq仅仅是对对象集合执行操作的委托方法。因此,如果您的客户端知道您的服务器应该处理的类型,那么您应该能够创建Func<T>
个对象并将其传递给服务器以便对其对象集合进行处理。我做过一次。请记住,您的客户应该知道您的服务器最终会在linq查询中拥有的任何内容。
除非您希望客户端能够从头开始构建linq查询,否则我看不到任何好的方法。一些不好的,但我不会去那里。
作为一个完全虚构的例子,你可以这样做:
Func<Order,bool> filter = o => o.Price > 0;
// pass the filter object to the server and on server do:
var res = objectCollection.Where(filter);
如果您的对象属于Order类型且包含名为“Price”的属性,则在这种情况下,查询将返回所有花费成本的订单。您也可以看到,您的客户必须知道“订单”类型才能设置查询。
答案 1 :(得分:1)
如果Linq查询(来自客户端)是您的首要重点,那么为什么不使用WCF数据服务;它支持来自客户端的linq操作。
阿什拉夫
答案 2 :(得分:0)
一个简单的简单方法是将LINQ查询作为字符串发送到服务方法,其返回类型包含适当的对象。因此,服务将只执行查询并返回序列化对象(可能是)。
但是你真的期待有一个泛型方法来返回一组LINQ查询吗?
答案 3 :(得分:0)
我不确定能不能写linq ......如果我错了,有人会纠正我。
更好的方法是使用dataadaptors并将sql传递给它并返回数据集。