C#循环中的foreach无法在循环中获取下一个XElement名称

3
我有以下代码,它应该执行以下操作:
如果从Web服务以XML格式返回记录,则循环遍历每个记录,获取ErrorCode、ErrorMessage和ID。然后将该信息发送到电子邮件中。接着解析每个记录并将其子元素写入表格。问题是它会将相同的记录写入多次,次数等于记录数。我似乎无法弄清楚为什么会这样。电子邮件部分按预期工作。
以下是代码:
#region If There Are RecordsInError From Broker Acknowledgement
if (srca.NumberOfResponseRecordsInError != "0")
{
    int TotalCount ;
    int.TryParse(srca.NumberOfResponseRecordsInError,out TotalCount);
    string[] ErrorCode = new string[TotalCount];
    string[] ErrorMessage = new string[TotalCount];
    string EmailBody = null;
    string StateRequestRecordGUID = null;

    for (int i = 0; i < TotalCount; i++)
    {
        //ZJR: Populate the string arrays with Error
        ErrorCode[i] = srca.FailedSeparationResponse[i].ErrorOccurrence[0].ErrorCode;
        ErrorMessage[i] = srca.FailedSeparationResponse[i].ErrorOccurrence[0].ErrorMessage;
        StateRequestRecordGUID = srca.FailedSeparationResponse[i].StateRequestRecordGUID;

        //ZJR: Database connection to insert Error Records
        SqlConnection conn4 = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=test_BdbCSSQL01;Persist Security Info=False;Integrated Security=SSPI;");
        conn4.Open();

        string sql = "SELECT * FROM ERROROfSIDESStagingOUT";
        SqlDataAdapter da = new SqlDataAdapter(sql, conn4);
        DataTable dt = new DataTable();
        da.Fill(dt);
        DataRow dr;
        dr = dt.NewRow();
        dt.Rows.Add(dr);

        XDocument doc = XDocument.Load("XmlString.xml");
        XNamespace ns = "https://uidataexchange.org/schemas";

        var node = doc.Descendants(ns + "EmployerTPASeparationResponse");

        using (da)
        {
            foreach (var param in node.Elements())
            {
                try
                {
                    if (dr.Table.Columns.Contains(param.Name.LocalName))
                    {
                        dr[param.Name.LocalName] = param.Value;
                    }
                    //param.NextNode;
                }
                catch (Exception ee)
                {
                    string asdf = ee.ToString();
                }
            }
            SqlCommandBuilder sb = new SqlCommandBuilder(da);
            da.Update(dt);
        }

        if (conn4 != null)
        {
            conn4.Close();
        }

        //ZJR: Build the Email Body
        EmailBody = EmailBody + "StateRequestRecordGUID: " + StateRequestRecordGUID + Environment.NewLine + "ErrorCode: " + ErrorCode[i] + " : " + ErrorMessage[i] + Environment.NewLine + Environment.NewLine;
        SendEmail mail = new SendEmail();
        mail.Send(EmailBody, "Sides Error Event");
    }
}
#endregion

@Oscar:你真的编辑了什么吗? - Zach
看起来@Joce在我之前几秒钟重新格式化了代码,所以它被覆盖了:)。代码在每个开头都有不必要的空格,这使得它不太易读。 - Oscar Mederos
1个回答

0

我找到了问题所在。是因为 (da) 这一行代码。我把它删掉了,现在代码运行得很好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接