c# - 在 Linq 投影中使用方法

标签 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) 
                                };

它给出了错误:

LINQ to Entities does not recognize the method 'System.String Format(System.String, System.Object, System.Object, System.Object)' method, and this method cannot be translated into a store expression.

果然我能做到:

 emp.FirstName+" "+ emp.LastName +" : " + ep.WTDPosition.Position

但它看起来很难看,关于如何使用 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) 
             };

关于c# - 在 Linq 投影中使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3765262/

相关文章:

c# - For vs. Linq - 性能 vs. future

c# - 从数组中删除第一个元素

c# - 为什么匿名类型在 C# 中是不可变的?

c# - 通过交换服务器发送电子邮件问题。 (system.net.mail 与 microsoft.exchange.webservices)

linq - 在 Linq 查询中使用自定义函数

c# - 为什么 C# 编译器允许使用 Linq 而不是使用括号执行强制转换?

c# - 带有变量名歧义的奇怪 C# 编译器问题

c# - 在图像上添加模糊效果

c# - 当不满足Where子句时,LINQ扩展方法是否可以使用new().Value创建新的KeyValuePair

c# - 不使用 MemberInit 创建实例和设置成员的表达式