2

我试图通过 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 但它给出了同样的错误。我认为这与它使用早期绑定或类似的东西有关,但在调试时我无法获得任何有用的信息。

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

4

1 回答 1

2

根据此文档: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)

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

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

Where(x => x.SubCategory.Name == "CategoryNameToExclude");
于 2011-11-15T08:30:13.547 回答