2010-11-08 4 views
8
string[] userIds = userList.Split(','); // is an array of integers 
IList<User> users = (from user in this.repository.Users 
        where userIds.Contains(user.Id.ToString()) 
        select user).ToList(); 

la requête ci-dessus donneLINQ to Entities ne reconnaît pas la méthode 'System.String ToString() méthode

System.NotSupportedException: LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression

Que puis-je faire?

Répondre

7

Évitez l'appel à ToString. Vous voulez quelque chose comme ceci:

userIds.Contains(user.Id) 

Pour faire ce travail la liste userIds doit être une collection du type qui a user.Id. Si vous voulez utiliser des entiers alors int.Parse pour convertir les chaînes en nombres entiers:

int[] userIds = userList.Split(',').Select(s => int.Parse(s)).ToArray(); 
13

utilisation peut utiliser quelque chose comme ça,

where userIds.Contains(SqlFunctions.StringConvert((double)user.Id)) 

au lieu de where userIds.Contains(user.Id.ToString())

cela devrait fonctionner

Questions connexes