2013-08-12 26 views
0

我正计划一个WCF服务来返回列表,数据,所有常用的东西。如何使用lambda/linq过滤WCF服务结果

现在我很久以前看到了这里作为.NET 4.5,你可以通过lambda表达式或过滤器,WCF(我也看到在pluralsight视频某处的东西),允许你写沿

东西线
IQuerable<string> GetInfo(); 
// or 
List<string> GetInfo(Expression predicate); 

而不是

GetInfo(int page, int resultsPerPage, bool sortAsc, string sortColumn); 

然而,正如我在读我周围看到很多相互矛盾的(老)的信息说这个心不是可能的。是否可以在通过linq或lambda表达式返回之前过滤WCF结果

更新

我实现了一个服务(WCF不WCF数据服务)像这样,我也得到了预期的结果。客户端实际上是将查询传递给Web服务还是正在呈现客户端?

public class Service1 : IService1 
{ 
    public IQueryable<string> DoWork() 
    { 
     List<string> strings = new List<string>(); 
     for (char c = 'a'; c < 'z'; c++) 
     { 
      strings.Add(c.ToString()); 
     } 

     return strings.AsQueryable(); 
    } 
} 

客户:

Service1 s = new Service1(); 
var results = s.DoWork(); 
var results1 = results.Where(str => str == "a"); // works 
+0

我想知道更多关于它。我假设消费者也应该实现IQurable。基于Java的消费者如何实现这一目标? – PradeepGB

+0

发现了类似的问题,接受这里: http://stackoverflow.com/questions/18143181/c-sharp-how-to-serialize-system-linq-expressions – PradeepGB

回答

0

看起来你需要WCF Data Services

+0

这是否工作就像正常的WCF服务? – Chris

+0

请定义“正常”。 :) – Dennis

+0

我似乎没有能力添加其中之一... – Chris