以下查询抱怨不支持int转换。
var list = from d in data
where d.Id == (int)GridView1.DataKeys[0].Value
select d;
它抱怨(int)GridView1.SelectedInex行告诉我不支持Int转换。我也尝试过Convert.ToInt32,但这也不起作用。
这个逻辑是否必须先在linq查询之上计算,或者是否有特殊的方法来执行此操作,如果没有,为什么它不支持它?
答案 0 :(得分:7)
为什么不尝试先将值解析为整数,在查询中不需要它。
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 :(得分:1)
我假设在哪一行是拼写错误后的分号?
在linq查询之外拉出强制转换,它试图为强制转换操作生成SQL,但不支持
int id = (int)GridView1.DataKeys[0].Value;
var list = from d in data
where d.Id = id
select d;
答案 2 :(得分:0)
我猜这里,但试试:
where d.Id == (int)(GridView1.DataKeys[0].Value);
如果它试图投射GridView。
(编辑:固定代码 - 请参阅问题评论)
这个答案错误!
答案 3 :(得分:0)
int.Parse( GridView1.DataKeys[0].Value )
将转换。
GridView1.DataKeys [0] .Value返回一个可能是也可能不是int的对象。