Вопрос

Преобразование полученного Entity в конкретный дочерний объект.

Добрый день!

Прошу помощи у знатоков серверной части Creatio. 

При работе с EntitySchemaQuery после указания фильтров и использования метода GetEntityCollection - мы получаем коллекцию сущностей какого-то конкретного объекта. Так вот вопрос. Возможно ли данную коллекцию сущностей (Entity) преобразовать к конкретному Entity (Например, Account или Contact) используя стандартный функционал?

Я знаю, что можно сделать что-то подобное:

var account = new Account(userConnection);

account.FetchFromDB(id);

 

Но, возможно ли сделать из этого коллекцию из нескольких результатов с фильтрами, например из ESQ?

Нравится

4 комментария

 Добрый вечер.

 

Вот таким образом можно из одной коллекции с помощью фильтров получать разные наборы данных, а потом уже работать со списком:

var collParameters = projectSchemesCollectionParameters.Where(p =>
    p.GetTypedColumnValue<string>("SchemeName") == 'Test name');
var collParametersList = collParameters.ToList();

 

 

Алла Савельева пишет:

 Добрый вечер.

Вот таким образом можно из одной коллекции с помощью фильтров получать разные наборы данных, а потом уже работать со списком:


 
var collParameters = projectSchemesCollectionParameters.Where(p =>
    p.GetTypedColumnValue<string>("SchemeName") == 'Test name');
var collParametersList = collParameters.ToList();

Спасибо, но это не то, о чем я спрашивал. Я имел ввиду что-то вроде этого:

 

entitySchemaQuery.GetEntityCollection(userConnection).Select(a =&gt; a as Account);

 

Тимофей Ромах,

Добрый день.

Подобная конструкция не будет работать - 

entitySchemaQuery.GetEntityCollection(userConnection).Select(a =&gt; a as Account);

 

  • При получении коллекции с помощью ESQ, вы будете работать уже с Enitity, используя его методы - например при получении значений из тех колонок, что вы вытянули через ESQ (конечно с примененными фильтрами).

 

 

Но дочернего объекта по цепочке - не будет.

Нашел решение, это возможно через Cast, а именно:

 

entitySchemaQuery.GetEntityCollection(userConnection).Cast&lt;Account&gt;();

После чего мы получаем IEnumerable<Account> с колонками, добавленными в ESQ

Показать все комментарии