给出以下代码:
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吗?
我通常通过创建两个语句来解决这个问题 - 一个在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)