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)扩展方法。
有人可以帮我解决一些解决这个问题的代码 - 或者解决它吗?我自己真的无法想出一个解决方案: - (
非常感谢你的帮助!
答案 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")
});