在c#中嵌套for循环中保存数据

时间:2014-12-23 10:11:38

标签: c# for-loop datatables

下面是我的代码

string Cmp_Cd_Typ_Id1_1 = "";
for (a = 0; a < dsDeviceMatch2.Tables[0].Columns.Count; a++)
{
    for (b = 0; b < dsDeviceMatch2.Tables[0].Columns.Count; b++)
    {
        Cmp_Cd_Typ_Id1_1 = Cmp_Cd_Typ_Id1_1 + dsDeviceMatch2.Tables[0].Rows[a][b].ToString() + ",";
    }
}

我在Cmp_Cd_Typ_Id1_1变量中保存数据。我需要分别保存每次迭代的数据,但在这里我得到的结果为a,b,c,d。但我需要单独保存一个单独的b等。我怎样才能实现这个

2 个答案:

答案 0 :(得分:2)

索引器a应该应用于Rows集合,而不应该应用于Columns集合

for (a = 0; a < dsDeviceMatch2.Tables[0].Rows.Count; a++)

强烈建议使用StringBuilder而不是像

这样的字符串连接
StringBuilder result = new StringBuilder();
for (int a = 0; a < dsDeviceMatch2.Tables[0].Rows.Count; a++)
{
    for (int b = 0; b < dsDeviceMatch2.Tables[0].Columns.Count; b++)
    {
        result.Append(dsDeviceMatch2.Tables[0].Rows[a][b].ToString() + ",");
    }
}
string Cmp_Cd_Typ_Id1_1 = result.ToString();

相反,如果您希望行彼此分开,那么您需要在此方法中添加List<strings>

// Each row will be an element of this list
List<string> rows = new List<string>();

for (int a = 0; a < dsDeviceMatch2.Tables[0].Rows.Count; a++)
{
    StringBuilder result = new StringBuilder();
    for (int b = 0; b < dsDeviceMatch2.Tables[0].Columns.Count; b++)
    {
        result.Append(dsDeviceMatch2.Tables[0].Rows[a][b].ToString() + ",");
    }
    // Add the row to the list removing the last comma
    rows.Add(result.ToString(0, result_1.Length - 1); 
}

答案 1 :(得分:1)

您正在连接相同字符串上的值,您可以使用字符串数组或列表来存储值,例如:

List<string> Cmp_Cd_Typ_Id1_1 = new List<string>;
for (a = 0; a < dsDeviceMatch2.Tables[0].Columns.Count; a++)
{
    for (b = 0; b < dsDeviceMatch2.Tables[0].Columns.Count; b++)
    {
        Cmp_Cd_Typ_Id1_1.Add(dsDeviceMatch2.Tables[0].Rows[a][b].ToString());
    }
}