Преобразование в int в LINQ не работает? - PullRequest
1 голос
/ 14 декабря 2009

Следующий запрос сообщает, что преобразование int не поддерживается.

var list = from d in data
           where d.Id == (int)GridView1.DataKeys[0].Value
           select d;

Он жалуется на (int) строку GridView1.SelectedInex, сообщающую, что преобразование Int не поддерживается. Я также попробовал Convert.ToInt32, но это тоже не сработало.

Является ли эта логика, которая должна быть вычислена до, например, выше запроса linq, или есть специальный способ сделать это, и если нет, почему он не поддерживает ее?

Ответы [ 4 ]

7 голосов
/ 14 декабря 2009

Почему бы не попытаться разобрать значение перед целым числом, это не нужно в запросе.

Int id;
if (Int32.TryParse(ridView1.DataKeys[0].Value.ToString(), out id))
{
    var list = from d in data
               where d.Id == id
               select d;
}
1 голос
/ 14 декабря 2009

Я предполагаю точку с запятой после строки где опечатка?

Вытащить приведение за пределы запроса linq, он пытается сгенерировать SQL для операции приведения, что не поддерживается

int id = (int)GridView1.DataKeys[0].Value;
var list = from d in data
           where d.Id = id
           select d;
0 голосов
/ 14 декабря 2009

вы кастуете, а не конвертируете.

int.Parse( GridView1.DataKeys[0].Value ) 

будет конвертировать.

GridView1.DataKeys [0]. Значение возвращает объект, который может быть или не быть целым.

0 голосов
/ 14 декабря 2009

Я угадываю здесь, но попробуйте:

where d.Id == (int)(GridView1.DataKeys[0].Value);

в случае, если он пытается привести GridView.

(редактировать: фиксированный код - см. Комментарий к вопросу)

Этот ответ неправильный !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...