Рекурсивный доступ к DataTable и ввод в запрос InnerXml

У меня есть DataTable в моем приложении. Он содержит DataColumns и Rows. Я просто хочу вызвать его рекурсивно и ввести в запрос InnerXml. здесь имена полей должны быть значениями DataColumns, а значение должно быть значением строки в DataTable. Ниже - мой проверенный код. Но у меня нет идеи перебирать DataTable и заполнять InnerXml.

    DataTable DT = new DataTable();

    for(int i=0 ; i<DT.Length ;i++){
               batchElement.InnerXml =
               "<Method ID='4' Cmd='New'>" + "<Field Name='" + DT.DataColumn[] + "'>" + DT.row + "</Field></Method>";

    }

Пожалуйста, помогите мне.

1 ответ

Решение

Вы хотите просто перечислить DataTable или вы действительно хотите рекурсивно повторить это? Я спрашиваю только потому, что ваш пример кода не показывает рекурсию, он показывает перечисление с двумя частями, которые не будут компилироваться.

Я предполагаю, что вы пытаетесь сериализовать данные, в этом случае следующий пример, вероятно, будет работать:

StringBuilder innerXml = new StringBuilder();
int methodId = 0;
foreach(DataRow row in DT.Rows)
{
    innerXml.AppendFormat("<Method ID='{0}' Cmd='New'>", methodId.ToString());
    methodId += 1;

    foreach(DataColumn column in DT.Columns)
    {
        innerXml.AppendFormat("<Field Name='{0}'>{1}</Field>", column.ColumnName, row[column.ColumnName]);
    }

    innerXml.AppendLine("</Method>");
}
batchElement.InnerXml = innerXml.ToString();

Извинения, если вышеперечисленное не компилируется - handtyped - должно, надеюсь, поставить вас на правильный путь.

NB: Я не совсем уверен, основываясь на вашем примере, как вы собираетесь разделять элементы строки и ячейки в Xml. Я сделал некоторые предположения относительно структуры Xml, но, надеюсь, вам будет достаточно

Другие вопросы по тегам