代码之家  ›  专栏  ›  技术社区  ›  John Farrell

WCF数据服务中存在集合条件

  •  6
  • John Farrell  · 技术社区  · 14 年前

    “给我所有没有分类的产品”

    我试过:

    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
    

    但所有这些都给了我不支持的例外。


    我不是在寻找替代品或选择。请不要用其他选项回答。

    3 回复  |  直到 11 年前
        1
  •  2
  •   Nix    14 年前

    我使用WCF数据服务的经验是缺少linqtorest的客户机子集。

    我有偏见的选择是把它移到服务器端,在那里您可以访问linqto实体的完整实现(或者任何你用来实现数据服务的东西)。

     [WebGet]
     public IQueryable<Products> GetProductsWithoutCategories(){
        /*start psudo code
          from p in Products
             where p.Categories.Count == 0
          select p
    
    
        */
    
     }
    
        2
  •  2
  •   John Farrell    14 年前

    不支持此操作:

    http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataservices/thread/b505d630-c808-4bde-b08e-3ce1dd17f621/

    ODataURL查询语言 客户端的LINQ处理器的结果 也不支持。如果你 你觉得加上这样的话很有价值吗 功能请使用我们的连接 网站的功能建议,它使 我们的计划工作下一次容易些 周围。 https://connect.microsoft.com/dataplatform/content/content.aspx?ContentID=15540&wa=wsignin1.0

    作为一种解决方法,您可能需要 返回IQueryable(so)的操作 你可以编写更多的查询 运算符的结果 客户端)并使用服务器端 提供程序发出上述查询。

        3
  •  0
  •   Edwin de Koning Umair Baig    13 年前

    我解决这个问题的方法是$展开查询中的相关字段,然后测试该字段是否为空。。。

       JArray _array = (JArray)main_table_object["some_related_field"];
    
       if (_array.Count > 0) 
          continue; 
    

    .. 这是在使用JSON作为消息格式从windows7phone到WCF服务的查询上下文中实现的。