Dynamics CRM 2011 фильтрация данных, возвращаемых из веб -службы
-
26-10-2019 - |
Вопрос
Я пытаюсь отфильтровать данные по 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");