Конвертировать строку в Int в LINQ to Entities? - PullRequest
4 голосов
/ 13 сентября 2011

Мне нужно преобразовать значение srting в Int, но, похоже, Linq для сущностей не поддерживает это.

для следующего кода, я получил ошибку er. Кто-нибудь знает, как преобразовать строку в int.

var query = (from p in dc.CustomerBranch
                     where p.ID == Convert.ToInt32(id)// here is the error.
                     select new Location()
                     {Name=p.BranchName,Address=p.Address, Postcode=p.Postcode,City=p.City,Telephone=p.Telephone}).First();
        return query;

ошибка: LINQ to Entities не распознает метод Int32 ToInt32 (System.String) ', и этот метод не может быть переведен в выражение магазина.

Ответы [ 2 ]

4 голосов
/ 13 сентября 2011

сделать преобразование за пределами linq:

var idInt = Convert.ToInt32(id);
var query = (from p in dc.CustomerBranch
                     where p.ID == idInt 
                     select new Location()
                     {Name=p.BranchName,Address=p.Address, Postcode=p.Postcode,City=p.City,Telephone=p.Telephone}).First();
        return query;
0 голосов
/ 23 февраля 2012

Нет, они не будут. Думайте об этом так; ToString () и parse () являются методами для объектов. Поскольку linq-to-entity пытается преобразовать ваше выражение linq в sql, они недоступны. Если это нужно сделать в запросе, это может быть возможно с Cast, который должен быть доступен в linq-to-entity [1]. В случае ToString вы можете использовать SqlFunctions.StringConvert () [2].

  1. http://msdn.microsoft.com/en-us/library/bb301460.aspx
  2. http://msdn.microsoft.com/en-us/library/system.data.objects.sqlclient.sqlfunctions.aspx
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...