11

nopCommerce 3.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();

しかし、エラーが表示されます

ここに画像の説明を入力

助けてください

4

1 に答える 1

0

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

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

等々。

ところで、

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

EF では動作しません。限目。別のことを考えたほうがいい。

于 2013-08-07T06:07:26.527 に答える