2013-01-16 107 views
3

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

據我所知,實體框架需要將我的LINQ語句轉換爲純SQL。這不適用於我的GetLocalizedString(string languageCode)擴展方法。

有沒有人可以幫我解決這個問題的一些代碼 - 或者解決它?我真的不能拿出一個解決方案自己:-(

非常感謝您的幫助

+1

如何爲'menuItems'初始化 – jrummell

+2

您是否嘗試過的標準soluti?在調用'Select'之前使用'ToList()'? –

+0

你可以給出'item'類型的定義嗎? – sinelaw

回答

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

嗨fricke,你是對的。這工作。但DanielHilgarth已經提出這個建議(請參閱上文)。感謝您的幫助! – Ingmar

相關問題