В настоящее время я перевожу свой код доступа к данным из L2S в базу данных Entity Framework db.У меня проблема с такими запросами, как:
var emps = (from emp in DataContext.setupEmployees
let contacts = DataContext.setupContacts.Where(x => x.EmployeeID == emp.EmployeeID).Select(x => x.Contact)
select new
{
EmployeeName = emp.EmployeeName,
Contacts = string.Join(", ", contacts.ToArray())
}).ToList();
EF сообщает, что не может преобразовать метод string.join
в сохраненное выражение.Один очевидный обходной путь - это поместить объекты в память (ToList, AsEnumerable и т. Д.), А затем вызвать метод string.Join
, такой как
var emps = (from emp in DataContext.setupEmployees
let contacts = DataContext.setupContacts.Where(x => x.EmployeeID == emp.EmployeeID).Select(x => x.Contact)
select new
{
EmployeeName = emp.EmployeeName,
Contacts = contacts
}).ToList().Select(x=>new{
x.EmployeeName,
Contacts = string.Join(", ",x.Contacts)
});
. Это решение отлично работает, но оно более многословно, и яЯ должен продублировать предложение select во многих запросах, которые раньше нормально работали в L2S.
Мой вопрос: Есть ли способ, которым я могу избежать написания этой вещи ToList
и вызова string.Join
и подобные методы в запросе EF?