【发布时间】:2013-01-16 15:28:12
【问题描述】:
LINQ to Entities 无法识别该方法...
各位,对不起。我意识到这个问题已经被数百人提出。不幸的是,我已经达到了我的心理界限,我找到的答案似乎都与我的情况不相符。
这是我尝试做的:
var apiMenuItems = menuItems.Select(item => new ApiMenuItem()
{
ID = item.ID,
Name = item.Name.GetLocalizedString("en")
});
如您所见,我想创建几个 ApiMenuItem 类型的新对象(这是一个非常简单的类)。
public class ApiMenuItem
{
public Guid ID { get; set; }
public string Name { get; set; }
}
据我了解,Entity Framework 需要将我的 LINQ 语句转换为纯 SQL。这不适用于我的 GetLocalizedString(string languageCode) 扩展方法。
任何人都可以帮助我解决这个问题 - 或解决它的一些代码吗?我自己真的想不出解决方案:-(
非常感谢您的帮助!
【问题讨论】:
-
menuItems是如何初始化的? -
在调用
Select之前,您是否尝试过使用ToList()的标准解决方案? -
能否给出
item的类型定义? -
@DanielHilgarth 您应该使用
AsEnumerable来确保通过 LINQ to Objects 而不是 ToList 评估查询,以免毫无意义地具体化整个列表并将所有项目放入内存中,而不是允许流式传输项目。 -
@DanielHilgarth 因为它返回
IEnumerable而不是IQueryable,因此您使用的所有未来 LINQ 方法都将使用IEnumerable重载而不是IQueryable重载。跨度>
标签: c# linq entity-framework linq-to-entities