web-dev-qa-db-ja.com

ステートメント本体を持つラムダ式は、nopCommerceで式ツリーに変換できません

NopCommerce3.0でlinq結合クエリを作成しようとしています。 linqの2つのテーブルを結合して、

コードは正常に。しかし、ビジュアルスタジオインテリジェンスは次のようなエラーを示しています

ステートメント本体を持つラムダ式は式ツリーに変換できません

以下の私のコードを参照してください

 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

助けてください

11
Ragesh S

エラーメッセージは正確にそれが言うことです。ラムダ式があります。ステートメント本体があります。ステートメント本体を持つラムダ式は、式ツリーに変換できません。ただし、Joinには、EFで使用する式ツリーが必要です。持っているものを、次のような本体を持たないラムダ式に置き換えてみてください。

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

等々。

ところで、

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

eFでは動作しません。限目。あなたは何か他のものを理解したほうがいいです。

0
jason