Entity framework 连接Linq到实体查询

Entity framework 连接Linq到实体查询,entity-framework,linq-to-sql,entity-framework-4,linq-to-entities,Entity Framework,Linq To Sql,Entity Framework 4,Linq To Entities,我目前正在首先将数据访问代码从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)

我目前正在首先将数据访问代码从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中工作得很好


我的问题:是否有任何方法可以避免编写此
列表
并调用
字符串。在EF查询中加入
和类似方法?

我建议将
联系人创建为
IEnumerable
数据类型,而不是
字符串
数据类型。您可以使用
联系人
生成任何您喜欢的逗号分隔的输出等

您可以将查询更改为如下所示:

var emps = (from emp in DataContext.setupEmployees
            select new 
            {
              EmployeeName = emp.EmployeeName,
              Contacts = DataContext.setupContacts.Where(x => x.EmployeeID == emp.EmployeeID).Select(x => x.Contact)
            }).ToList();