给出以下代码:
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)
};
它给出错误:
LINQ to Entities无法识别 方法'System.String 格式(System.String,System.Object, System.Object,System.Object)'方法, 而这种方法无法翻译 进入商店表达。
果然我能做到:
emp.FirstName+" "+ emp.LastName +" : " + ep.WTDPosition.Position
但它看起来很难看,有关如何使用string.Format
的任何建议吗?
答案 0 :(得分: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)
};
答案 1 :(得分:1)
This codeplex project声称可以完全按照自己的意愿行事。 不幸的是我现在没有时间尝试 - 但这就是他们所说的
LINQ Expression Projection库提供了支持使用的工具 LINQ投影中的lambda表达式(对于匿名和预定义 即使lambda表达式没有在查询中定义,但是 而是存储在变量中或通过函数或检索 属性。