【问题标题】:Dynamics CRM 2011 filtering data returned from web serviceDynamics CRM 2011 过滤从 Web 服务返回的数据
【发布时间】:2011-07-26 10:59:51
【问题描述】:

我试图通过 EntityReference 过滤数据,但没有成功。如果没有 where 子句,使用 where 子句运行良好,我会收到以下错误:

服务器没有提供有意义的回复;这可能是由 合同不匹配、会话过早关闭或内部 服务器错误。

这是我调用 CRMService 的方法:

/// <summary>
        /// Gets the categories.
        /// </summary>
        /// <returns></returns>
        public IEnumerable<category> GetCategoriesExcludingSomething()
        {
            IEnumerable<category> data = CrmClient.categorySet.OrderBy(x => x.SubCategory).ThenBy(x => x.itf_name);

            return data.Where(x => x.SubCategory.ToString() == "SomethingToExclude");
        }

我也尝试过使用 SubCategory.Name 但它给出了同样的错误。我认为这与它使用早期绑定或类似的东西有关,但在调试时我无法获得任何有用的信息。

任何建议或帮助都会很棒,这应该很容易:/

【问题讨论】:

    标签: where dynamics-crm-2011 entityreference


    【解决方案1】:

    根据本文档:http://technet.microsoft.com/en-us/library/gg328328.aspx

    LINQ 查询提供程序支持 LINQ 运算符的子集。不是 支持所有可以在 LINQ 中表达的条件。

    orderBy 支持按实体属性排序,例如 Contact.FullName。

    您可以做的是先使用 where 子句,然后使用 ToList() 方法。在此之后,您将拥有一个可以使用所有常见 Linq 查询的数据集合。

    此外,尝试通过 EntityReference 进行 OrderBy 也不是好方法。您应该尝试这样订购:

    OrderBy(x => x.SubCategory.Id)
    

    where: 子句左侧必须是属性名,子句右侧必须是值。您不能将左侧设置为常数。子句的两边都不能是常数。 支持字符串函数 Contains、StartsWith、EndsWith 和 Equals

    您可以在此处执行的操作是按 Id 或按名称过滤值(在这种情况下,这是您从 EntityReference 获得的唯一相关信息)。

    Where(x => x.SubCategory.Name == "CategoryNameToExclude");
    

    【讨论】:

      猜你喜欢
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 2012-05-21
      • 2012-06-17
      • 2014-01-11
      • 1970-01-01
      • 2012-01-05
      • 2014-02-11
      相关资源
      最近更新 更多