使用winforms,c#和sqlite
我试图使用以下内容将string类型的列表转换为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();
}
问题是编译程序时出现此错误:
答案 0 :(得分:2)
您无法像这样使用ConvertAll
。但你可以这样做:
list2.Select(s => int.Parse(s)).ToList();
这会给你一个List<int>
。
答案 1 :(得分:1)
一种方法是重新设计代码,以便您拥有整数值的列表。
例如:
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
成功,然后再添加它。
答案 2 :(得分:0)
如果您想使用ConvertAll
,请按以下步骤使用。{p>
List<int> ints = list2.ConvertAll(x => int.Parse(x));