我正在尝试询问我的OData服务:
“向我提供所有没有类别的产品”
产品和类别的关系为m2m。
我试过了:
from p in Products
where p.Categories == null
select p
和
from p in Products
where !p.Categories.Any()
select p
和
from p in Products
where p.Categories.Count == 0
select p
但所有这些都让我不支持例外。
我不是在寻找替代品或选择。请不要回答其他选择。
答案 0 :(得分:2)
我对WCF数据服务的经验是缺少LINQ的客户端子集。
我有偏见的选择是将它移动到服务器端,你可以访问LINQ的完整实现吗? (或用于实现数据服务的任何内容)。
[WebGet]
public IQueryable<Products> GetProductsWithoutCategories(){
/*start psudo code
from p in Products
where p.Categories.Count == 0
select p
*/
}
答案 1 :(得分:2)
不支持:
目前的OData URL查询语言 不支持此类查询。如 结果客户端的LINQ处理器 也不支持它。如果你 认为添加这样的东西很有价值 功能请使用我们的连接 网站建议功能,它使 我们的计划工作下次会更容易 周围。 https://connect.microsoft.com/dataplatform/content/content.aspx?ContentID=15540&wa=wsignin1.0
作为一种解决方法,您可以使用 服务运作。定义服务 返回IQueryable的操作(所以 你可以撰写更多的查询 运营商的结果来自 客户端)并使用服务器端 提供者发出上述查询。
答案 2 :(得分:0)
我对这个问题的解决办法是$扩展查询中的相关字段,然后测试该字段是否为空......
JArray _array = (JArray)main_table_object["some_related_field"];
if (_array.Count > 0)
continue;
..这是在使用JSON作为消息格式从Windows 7手机到WCF服务的查询的上下文中。