Рекурсивный доступ к 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, но, надеюсь, вам будет достаточно