2010-11-08 13 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(); 

query precedente dàLINQ to Entities non riconosce il metodo 'System.String ToString()' metodo

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

Che cosa posso fare?

risposta

7

Evitare la chiamata a ToString. Volete qualcosa di simile:

userIds.Contains(user.Id) 

per fare questo lavoro lista userIds deve essere una raccolta del tipo che ha user.Id. Se si desidera interi quindi utilizzare int.Parse per convertire le stringhe di numeri interi:

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

uso può usare qualcosa di simile,

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

invece di where userIds.Contains(user.Id.ToString())

questo dovrebbe funzionare

Problemi correlati