实体LINQ不识别该方法



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; }
 }

据我所知,实体框架需要将我的LINQ语句转换为纯SQL。这不适用于我的GetLocalizedString(string languageCode)扩展方法。

谁能帮我解决一些代码,修复这个问题-或工作围绕它?我自己真的想不出解决办法来:

非常感谢你的帮助!

如果您在选择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")
});

最新更新