2011-06-30 3 views
0

J'ai la fonction suivante dans Data Access Layer mais l'erreur suivante s'affiche sur mon instruction RETURN.Requête LINQ à l'erreur de type DataTable

Les arguments de type pour la méthode 'System.Data.DataTableExtensions.CopyToDataTable (System.Collections.Generic.IEnumerable)' ne peuvent pas être déduites de l'utilisation. Essayez préciser les arguments de type explicitement

Mon code est:

DL.FVRGDataContext db = new FVRGDataContext(); 

public DataTable getRestaurants(string cuisineName) 
{ 
    var cuisineIdFind = from CUISINE in db.CUISINEs 
         where CUISINE.CUISINE_NAME == cuisineName 
         select CUISINE.CUISINE_ID; 

    var restaurantList = from RESTAURANT in db.RESTAURANTs 
         where RESTAURANT.CUISINE_ID == 2 
         orderby RESTAURANT.REST_NAME ascending 
         select i; 

    DataTable result = new DataTable(); 
    result = restaurantList.CopyToDataTable(); 

    return result; 
} 
+5

Je suis surpris que l'affectation 'restaurantList' n'ait pas échoué - quel' i's-tu choisi ici? –

+2

Et ** pourquoi diable ** prenez-vous une liste de 'Restaurant' en utilisant LINQ, seulement pour ensuite le convertir en un klunky, difficile à utiliser' DataTable' ..... n'a aucun sens du tout pour moi - mais c'est juste moi ... –

Répondre

0

CopyToDataTable ne fonctionne pas de cette façon ... il a un paramètre générique T, où T doit être une sous-classe de DataRow . En d'autres termes, CopyToDataTable ne peut pas être utilisé pour convertir une collection arbitraire en DataTable, les éléments de la collection doivent être DataRows eux-mêmes.

Dans votre cas, CUISINE et RESTAURANT semblent être des entités Linq to SQL ou Entity Framework, pas DataRows, donc cela ne peut pas fonctionner.

+0

Merci pour votre aide. – SUSAN