LINQ to Entities无法识别该方法

时间:2013-01-16 15:28:13

标签: c# linq entity-framework linq-to-entities

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)扩展方法。

有人可以帮我解决一些解决这个问题的代码 - 或者解决它吗?我自己真的无法想出一个解决方案: - (

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:2)

如果您在选择ApiMenuItem之前使用ToList()从数据库中获取项目,它会起作用:

var apiMenuItems = menuItems.ToList().Select(item => new ApiMenuItem()
{
    ID = item.ID,
    Name = item.Name.GetLocalizedString("en")
});

但出于性能原因,你应该这样做:

var apiMenuItems = menuItems.Select(item => new 
{
    //What to select from db
    ID = item.ID, 
    Name = item.Name
}).ToList() //Fetch from db
.Select(item => new ApiMenuItem()
{
    //Select with code
    ID = item.ID,
    Name = item.Name.GetLocalizedString("en")
});