我正在计划一个 WCF 服务来返回列表、数据和所有常见的东西。
现在我很久以前在这里看到,从 .NET 4.5 开始,您可以将 lambda 表达式或过滤器传递给 WCF(我还在某处的复数视频中看到了一些东西),这使您可以按照以下方式编写一些东西
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