A lambda expression with a statement body cannot be converted to an expression tree in nopCommerce
The error message is exactly what it says. You have a lambda expression. It has a statement body. A lambda expression with a statement body can not be converted to an expression tree. But Join
requires an expression tree to use with EF. You should try replacing what you have with a lambda expression that doesn't have a body like:
(cev, c) => new CustomerEventRolesModel {
Id = cev.Id,
CustomerId = c.Id
}
And so on.
By the way,
ContactName = c.GetAttribute<string>(SystemCustomerAttributeNames.FirstName)
will NOT work with EF. Period. You better figure something else out.
Ragesh S
Welcome, my name is Ragesh P R. I am a software developer from Cochin India who loves to write software to build great products and help businesses succeed with their goals. I really encourage good design and I am seeing its importance more than ever in today's apps, websites, and products. I have been working professionally in software development since 2010 in the web and mobile spaces with experience across various domains. Skype : ragesh.sl
Updated on October 17, 2020Comments
-
Ragesh S over 3 years
I try to create a linq join query in the nopCommerce 3.0. i join two table in linq and write
the code successfully. but the visual studio intellicence shows the error like
A lambda expression with a statement body cannot be converted to an expression tree
please see my code below
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();
but the error shows
please help