Dynamics CRM 2011 фильтрация данных, возвращаемых из веб -службы

StackOverflow https://stackoverflow.com/questions/6829008

Вопрос

Я пытаюсь отфильтровать данные по EntityReference без повезло. Без предложения о том, где он работает нормально с предложением, где я получаю следующую ошибку:

Сервер не дал значимого ответа; Это может быть вызвано несоответствием контракта, преждевременным отключением сеанса или ошибкой внутренней сервера.

Вот мой метод, который называет 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 также, но это дает ту же ошибку. Я думаю, что это связано с тем, что он использует раннее привязку или что -то в этом роде, но я не мог получить какую -либо полезную информацию при отладке.

Любой совет или помощь было бы здорово, это должно быть легко:/

Это было полезно?

Решение

Согласно этой документации: http://technet.microsoft.com/en-us/library/gg328328.aspx

Поставщик запросов LINQ поддерживает подмножество операторов LINQ. Не все условия, которые могут быть выражены в LINQ, поддерживаются.

Сортировать поПоддерживает заказ атрибутами объекта, такими как Contact.fullName.

Что вы могли бы сделать, так это использовать предложение о том, где можно сначала, а затем использовать метод толиста (). После этого у вас будет набор данных, на которых вы можете использовать все общие запросы LINQ.

Кроме того, попытка заказать EntityReference - это не хороший способ сделать это. Вы должны попробовать заказать так:

OrderBy(x => x.SubCategory.Id)

куда: Левая сторона пункта должна быть именем атрибута, а правая сторона предложения должна быть значением. Вы не можете установить левую сторону на постоянную. Обе стороны пункта не могут быть постоянными. Поддерживает строковые функции содержит, startswith, endswith и equals

То, что вы могли бы сделать здесь, это либо фильтрация значений по идентификатору, либо по имени (это единственная соответствующая информация, которую вы имеете из EntityReference в этом случае).

Where(x => x.SubCategory.Name == "CategoryNameToExclude");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top