我真的需要能够在WCF数据服务查询上执行'DISTINCT'。我可以使用WCF数据服务(OData)查询执行“区分”吗?
从我可以告诉,这样的功能不存在。我知道我可以在客户端的Linq查询中使用Distinct扩展方法,但它仍然会保存完整的结果集(在这种情况下,这不是我想要的)。
任何想法?
我真的需要能够在WCF数据服务查询上执行'DISTINCT'。我可以使用WCF数据服务(OData)查询执行“区分”吗?
从我可以告诉,这样的功能不存在。我知道我可以在客户端的Linq查询中使用Distinct扩展方法,但它仍然会保存完整的结果集(在这种情况下,这不是我想要的)。
任何想法?
不是内置的。它目前也不是OData协议的一部分(没有聚合除了计数,我们我们肯定需要考虑它)。推荐的方法是检索所有数据并对客户端进行设置操作(yuck!)。这就是说,你必须以某种方式在客户端和服务器上扩展WCF数据服务,以提供这种功能(我不太熟悉它可以指向正确的钩子)。
你可以随时提供一个WebMethod
(这只是WCF的顺便)来完成这项工作,但我会想象那不是你打算如何使用数据服务。
我建议使用WCF数据服务,服务操作 - http://msdn.microsoft.com/en-us/library/cc668788.aspx作为更好的解决方案(通过web方法)。服务操作是封装不受OData查询语法启用的查询功能的好方法。