2013-01-16 4 views
3

LINQ to Entities ne reconnaît pas la méthode ...LINQ to Entities ne reconnaît pas la méthode

Les gars, je suis désolé. Je me rends compte que cette question a déjà été soulevée par des centaines de personnes. Malheureusement, j'ai déjà atteint mes limites mentales et aucune des réponses que j'ai trouvées ne semblait correspondre à mon cas.

Voici ce que j'essayé de faire:

var apiMenuItems = menuItems.Select(item => new ApiMenuItem() 
      { 
       ID = item.ID, 
       Name = item.Name.GetLocalizedString("en") 
      }); 

Comme vous pouvez le voir, je veux créer un couple de nouveaux objets de type ApiMenuItem (qui est une classe très simple). Pour autant que je l'aie compris, Entity Framework doit convertir mon instruction LINQ en langage SQL pur. Cela ne fonctionne pas avec ma méthode d'extension GetLocalizedString (string languageCode).

Quelqu'un pourrait-il m'aider avec un code qui résout ce problème - ou contourne le problème? Je ne peux vraiment pas venir avec moi-même solution :-(

Merci beaucoup pour votre aide

+1

Comment est 'menuItems' initialisé – jrummell

+2

Avez-vous essayé la norme soluti? sur l'utilisation de 'ToList()' avant l'appel de 'Select'? –

+0

Pouvez-vous donner la définition du type de 'item'? – sinelaw

Répondre

2

Il fonctionne si vous utilisez ToList() pour aller chercher les articles de la base de données avant de sélectionner ApiMenuItem:

var apiMenuItems = menuItems.ToList().Select(item => new ApiMenuItem() 
{ 
    ID = item.ID, 
    Name = item.Name.GetLocalizedString("en") 
}); 

Mais pour des raisons de performance que vous devriez le faire comme ceci:

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

Salut fricke, tu as raison. Cela marche. Mais DanielHilgarth a déjà suggéré cela (voir ci-dessus). Merci pour votre aide! – Ingmar

Questions connexes