LINQ to Entities не распознает метод метода System.String ToString () - PullRequest
8 голосов
/ 08 ноября 2010
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();

Приведенный выше запрос дает

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

Что я могу сделать?

Ответы [ 2 ]

14 голосов
/ 29 октября 2011

Использование может использовать что-то вроде этого,

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

вместо where userIds.Contains(user.Id.ToString())

это должно работать

7 голосов
/ 08 ноября 2010

Избегайте звонка на ToString. Вы хотите что-то вроде этого:

userIds.Contains(user.Id)

Чтобы сделать эту работу, список userIds должен быть коллекцией типа, который имеет user.Id. Если вам нужны целые числа, используйте int.Parse для преобразования строк в целые числа:

int[] userIds = userList.Split(',').Select(s => int.Parse(s)).ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...