3

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

任何人都可以帮我解决这个问题的一些代码 - 或解决它吗?我自己真的想不出解决方案:-(

非常感谢你的帮助!

4

1 回答 1

2

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

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")
});
于 2013-01-17T08:46:27.867 回答