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