2015-09-16 2 views
1

Я хочу сделать простой запрос с использованием динамического Linq против CRM 2015. Лицо new_entity и имеет строковое поле new_field. Я хочу, чтобы все записи new_entity имели new_field! = Null и находятся в списке предоставленных значений.Использование динамических Linq с опозданием связанных CRM 2015 организаций

List<string> possibleValues = new List<string> { "value1", "value2", "value3", "value4" }; 

string stringQuery = ????; 

var result = (from e in organizationServiceContext.CreateQuery("new_entity") 
         .Where(stringQuery) 
         select e).ToList(); 

Я использую поздно неизбежно сущности так CreateQuery возвратит IQueryable<Entity> не IQueryable<new_entity>. Как создать предикат stringQuery для фильтрации new_field со списком возможных значений?

ответ

2

использовать что-то вроде этого:

.Where(ne => ne.GetAttributeValue<string>("new_field") == "my value") 
+0

Я использую библиотеку Dynamic Linq. В этом случае метод 'Where' примет строковый параметр для фильтрации результатов. Мне также нужно отфильтровать результаты со списком значений не только одного. – budahead

+1

Динамическая библиотека Linq не будет работать в сочетании с Dynamics CRM. Для CRM пользовательская реализация была разработана на основе «QueryExpression», но поддерживается только подмножество ее возможностей. Например, оператор 'in' не реализован. Кроме того, правая часть выражения всегда должна быть буквальной. Все условия должны содержаться в предложении Where, иначе запрос может быть неправильно интерпретирован. –

+0

Итак, вы говорите, что я не могу использовать linq с связанными с crm объектами динамически? Я могу только выполнить это с помощью 'QueryExpression'? Если вы положите это в ответ, я буду отмечать его как принятый ответ. – budahead