使用Linq投影中的方法

Arj*_*ang 4 c# linq

给出以下代码:

        var EmployeeXPosition = from emp in context.WTDEmployee
                                from ep in emp.WTDEmployeeXOXPosition
                                select new { 
                                    EmployeeId = emp.id, 
                                    FullNameAndPosition =  string.Format("{0} {1} : {2}", emp.FirstName, emp.LastName, ep.WTDPosition.Position) 
                                };
Run Code Online (Sandbox Code Playgroud)

它给出了错误:

LINQ to Entities无法识别方法'System.String Format(System.String,System.Object,System.Object,System.Object)'方法,并且此方法无法转换为商店表达式.

果然我能做到:

 emp.FirstName+" "+ emp.LastName +" : " + ep.WTDPosition.Position
Run Code Online (Sandbox Code Playgroud)

但它看起来很难看,有关如何使用的任何建议string.Format吗?

Sla*_*ggg 5

我通常通过创建两个语句来解决这个问题 - 一个在LinqToEntities(或ToSql,或其他)中,另一个在LinqToObjects中.我在商店中做我需要做的事情,然后对内存中的对象执行单独的处理步骤.这混合了两全其美.

 var EmployeeXPosition = from emp in context.WTDEmployee
                                from ep in emp.WTDEmployeeXOXPosition
                                select new { 
                                    emp.id, 
                                    emp.FirstName, 
                                    emp.LastName,
                                    ep.WTDPosition.Position
                                };

var result = from item in EmployeeXPosition.ToList()
             select new 
             {
                EmployeeId = item.id, 
                FullNameAndPosition =  string.Format("{0} {1} : {2}", item.FirstName, item.LastName, item.Position) 
             };
Run Code Online (Sandbox Code Playgroud)