数组循环不显示后续值

时间:2019-02-25 00:11:49

标签: arrays c#-4.0

我有一个C#WinForms应用程序,它使用StringBuilder附加月份,dayOfWeek,一天中的时间,名称,日期和可选注释的值。

每个值后面都跟一个逗号,然后是下一个值。我创建一个string []数组string [] thisAssignment,然后将StringBuilder分配给数组,如下所示:

thisAssignment = fsAssign.ToString()。Split(','); RecordMonday2SaturdayAssignments(thisAssignment);

我将数组传递给一个方法,在该方法中,我将数组的各个元素分配给变量,然后将其参数化以用于SQL INSERT语句。

我遇到的问题是,单步执行代码时,我可以看到month和dayOfWeek,即“ Monday”。但是,在下一次迭代时,它将再次显示星期一的值,而不是继续显示星期二,等等。

我在下面显示了循环。

for (int i = 0; i < assignments.Length; i++ )
{
    month = assignments[0].ToString();
    dayOfWeek = assignments[1].ToString();
    fsTimes = assignments[2].ToString();
    name = assignments[3].ToString();
    date = assignments[4].ToString();
    comment = assignments[5].ToString();

    cmd.Parameters.Clear();
    List<SqlParameter> list = new List<SqlParameter>();
    list.Add(new SqlParameter("@month", month));
    list.Add(new SqlParameter("@dayOfWeek", dayOfWeek));
    list.Add(new SqlParameter("@fsTimes", fsTimes));
    list.Add(new SqlParameter("@names", name));
    list.Add(new SqlParameter("@dates", date));
    list.Add(new SqlParameter("@comments", comment));
    cmd.Parameters.AddRange(list.ToArray<SqlParameter>());
    int response = cmd.ExecuteNonQuery();
}

我也尝试过在数组的元素编号之前或之后添加索引,如下所示

for (int i = 0; i < assignments.Length; i++ )
{
    month = assignments[i][0].ToString();
    dayOfWeek = assignments[i][1].ToString();
    fsTimes = assignments[i][2].ToString();
    name = assignments[i][3].ToString();
    date = assignments[i][4].ToString();
    comment = assignments[i][5].ToString();
}

但是,循环没有显示正确的值,而是从月份名称中提取了单个字符。例如,当我选择2月时,month变量填充了字母“ F”,dayOfWeek变量具有“ e”,fsTimes具有“ b”,依此类推。在我的原始文章中,我忽略了提及我已经将“ i”索引与数组元素一起使用的问题。

如果有人对以其他方式形成数组循环有帮助的建议,我很想听听。甚至更好的建议是,允许我从数组中提取多个值并将它们分配给上述变量。

1 个答案:

答案 0 :(得分:0)

我一直在尝试各种想法来解决此问题,最后发现在这种情况下有效的方法。由于仅使用单个索引仅在第一次迭代时提供了数据,并且仅使用“ i”本身就返回了单个字符,因此我发现从第二个元素开始将“ i + = 1”递增就从所有行返回了我的数据。

我在下面展示我的工作。

for (int i = 0; i < assignments.Count; i++)
{
    month = assignments[i];
    dayOfWeek = assignments[i += 1];
    fsTimes = assignments[i += 1];
    name = assignments[i += 1];
    date = assignments[i += 1];
    comment = assignments[i += 1];

    cmd.Parameters.Clear();

    List<SqlParameter> list = new List<SqlParameter>();
    list.Add(new SqlParameter("@month", month));
    list.Add(new SqlParameter("@dayOfWeek", dayOfWeek));
    list.Add(new SqlParameter("@fsTimes", fsTimes));
    list.Add(new SqlParameter("@names", name));
    list.Add(new SqlParameter("@dates", date));
    list.Add(new SqlParameter("@comments", comment));

    cmd.Parameters.AddRange(list.ToArray<SqlParameter>());

    int response = cmd.ExecuteNonQuery();

}