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();
しかし、エラーは
助けてください
エラーメッセージは正確にそれが言うことです。ラムダ式があります。ステートメント本体があります。ステートメント本体を持つラムダ式は、式ツリーに変換できません。ただし、Join
には、EFで使用する式ツリーが必要です。持っているものを、次のような本体を持たないラムダ式に置き換えてみてください。
(cev, c) => new CustomerEventRolesModel {
Id = cev.Id,
CustomerId = c.Id
}
等々。
ところで、
ContactName = c.GetAttribute<string>(SystemCustomerAttributeNames.FirstName)
eFでは動作しません。限目。あなたは何か他のものを理解したほうがいいです。