如何将var类型转换为int?

时间:2013-12-04 12:14:38

标签: c# asp.net var

以下是我的代码中的var类型变量:

var FormID = from n in dtEnDate.AsEnumerable()
             where n.Field<int>("Tax_Setup_UID") ==
                   Convert.ToInt32(item.GetDataKeyValue("Tax_Setup_UID"))
             select n.Field<string>("FormID");

这里给了我一个蠢货。现在我想将这个var类型变量转换为int以供下次使用,如果我尝试不转换它会给我一个错误。但我无法做到,请有人帮助我。

4 个答案:

答案 0 :(得分:5)

您正在返回select n.Field<string>("FormID"),因此var FormID的实际类型将为IEnumerable<string>

如果您知道查询将返回一个结果,您可以执行以下操作:

int formID = int.Parse(FormID.First());

如果FormID是您数据库中的int,请将n.Field<string>更改为n.Field<int>,您可以省略int.Parse()

答案 1 :(得分:5)

首先,正如已经指出的那样,var不是它自己的类型。相反,它将采用分配给它的值的类型。您可以通过在Visual Studio中将鼠标悬停在其上来查看哪种类型。

在这个例子中,您应该找到类型IEnumerable<string>

所以你需要做的第一件事就是得到你想要的东西。假设您只期望一个结果,那么您可以这样做:

var item = FormID.First();//FormID is probably not a good choice for this variable name

然后,您可以将string转换为int,如下所示:

int i = int.Parse(item);

int i = Convert.ToInt32(item);

答案 2 :(得分:1)

首先,var不是类型,它只是“任何类型的简写,编译器必须找出哪一个”。

其次,您的代码将“FormID”字段作为string返回,而不是int,因此您的变量FormID将为IEnumerable<string>

如果FormID中的int实际上是DataTable,而select n.Field<int>("FormID");只是string,则必须将int转换为Convert.ToInt32(n.Field<string>("FormID"))例如,选择{{1}}。

答案 3 :(得分:0)

要记住的一件事是,在将值存储到var中之前,将鼠标悬停在调用函数上并检查其实际返回值。它将为您提供精确/清晰的概念,将返回值存储在何处,以及是否有任何直接转换可用[i.e. Convert.ToInt32 and TryParse etc. when returned type is object or .First/Last in case of Enumerable]。这样一来,您就可以在以后的步骤中免受转化的威胁。