转换为LINQ中的int不起作用?

时间:2009-12-14 19:22:04

标签: c# linq-to-sql

以下查询抱怨不支持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 个答案:

答案 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的对象。