![](/img/trans.png)
[英]unable to do type casting string to int in C# , giving error - Input string was not in a correct format
[英]c#: Input string not in correct format error when converting list of type string to int
使用winforms,c#和sqlite
我试图使用以下命令将字符串类型的列表转换为int:
List<int> ints = list2.ConvertAll<int>(int.Parse);
注意:在编写上面的代码之前,我在方法之外声明了列表,如下所示:
List<int> ints = new List<int>();
我想使用此列表在sqlite中填充列,如下所示:
sqlite_cmd.CommandText = "CREATE TABLE IF NOT EXISTS 't2' (YYMM int32, MinDate int32, MaxDate int32, TotalTrans int32, DebitTrans int32, AMOUNTINDOCUMENTCURREN int32 );";
sqlite_cmd.ExecuteNonQuery();
sqlite_cmd.CommandText = " DELETE FROM t2";
sqlite_cmd.ExecuteNonQuery();
sqlite_cmd.CommandText = "INSERT INTO t2 (YYMM, MinDate, MaxDate, TotalTrans, DebitTrans, AMOUNTINDOCUMENTCURREN ) VALUES (@b1, @b2, @b3, @b4, @b5, @b6)";
sqlite_cmd.Parameters.AddWithValue("@b1", 6); // dummy initial values
sqlite_cmd.Parameters.AddWithValue("@b2", 878);
sqlite_cmd.Parameters.AddWithValue("@b3", 56);
sqlite_cmd.Parameters.AddWithValue("@b4", 6);
sqlite_cmd.Parameters.AddWithValue("@b5", 546);
sqlite_cmd.Parameters.AddWithValue("@b6", 565);
for (int i = 0; i < NumList2Values; i += 6) // Filling SQlite table rows and columns with values from list2
{
sqlite_cmd.Parameters.AddWithValue("@b1", ints[i]);
sqlite_cmd.Parameters.AddWithValue("@b2", ints[i + 1]);
sqlite_cmd.Parameters.AddWithValue("@b3", ints[i + 2]);
sqlite_cmd.Parameters.AddWithValue("@b4", ints[i + 3]);
sqlite_cmd.Parameters.AddWithValue("@b5", ints[i + 4]);
sqlite_cmd.Parameters.AddWithValue("@b6", ints[i + 5]);
sqlite_cmd.ExecuteNonQuery();
}
问题是在编译程序时出现此错误:
您将无法像那样使用ConvertAll
。 但是您可以这样做:
list2.Select(s => int.Parse(s)).ToList();
这会给你一个List<int>
。
一种方法是重新设计代码,以便获得整数值列表 。
例如:
private void TestRoutine(List<string> section2, int[] pos2,
int[] len2, string[] val2)
{
var list2 = new List<int>();
foreach (var line in section2)
{
for (int k = 0; k < 6; k++)
{
int numValue = 0;
val2[k] = line.Substring(pos2[k], len2[k]);
int.TryParse(val2[k], out numValue);
list2.Add(numValue);
}
}
}
您还可以添加一些代码来检查并确保TryParse
在添加之前成功。
如果要使用ConvertAll
,请按以下方法使用它。
List<int> ints = list2.ConvertAll(x => int.Parse(x));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.