Лямбда-выражение с телом оператора не может быть преобразовано в дерево выражений в nopCommerce

Я пытаюсь создать запрос соединения linq в nopCommerce 3.0. я присоединяю две таблицы в linq и пишу

код успешно. но визуальная студийная интеллектность показывает ошибку, например

Лямбда-выражение с телом оператора не может быть преобразовано в дерево выражений

см. мой код ниже

 var roles = _customerEventRoleRepository.Table.Where(c => c.EventId == selevent)
                   .Join
                   (
                      _customerRepository.Table,
                      cev => cev.CustomerId, c => c.Id,
                      (cev, c) =>
                      {                             
                          var cust = new CustomerEventRolesModel();

                          cust.Id = cev.Id;
                          cust.CustomerId = c.Id;
                          cust.Customer = c.Email;
                          cust.ContactName = c.GetAttribute<string>(SystemCustomerAttributeNames.FirstName);
                          cust.CompanyName = c.GetAttribute<string>(SystemCustomerAttributeNames.Company);
                          cust.Speaker = cev.IsSpeaker;
                          cust.Sponsor = cev.IsSponser;

                          return cust;
                      }
                    ).OrderBy(cev => cev.Customer).ToList();

но ошибка показывает

enter image description here

пожалуйста, помогите

Ответ 1

Сообщение об ошибке - это именно то, что он говорит. У вас есть лямбда-выражение. У него есть орган заявления. Лямбда-выражение с телом оператора не может быть преобразовано в дерево выражений. Но для Join требуется дерево выражений для использования с EF. Вы должны попробовать заменить то, что у вас есть, с выражением лямбда, у которого нет тела:

(cev, c) => new CustomerEventRolesModel {
                Id = cev.Id,
                CustomerId = c.Id
            }

И так далее.

Кстати,

ContactName = c.GetAttribute<string>(SystemCustomerAttributeNames.FirstName)

НЕ будет работать с EF. Период. Вам лучше понять что-то еще.