Как преобразовать DataTable в строку в C#?

Технически JPanel может начаться non-opague. Это было верно для взгляда Gtk & чувство в 1,5 (или 1.4?), но никакой другой PL& Фс, насколько я знаю.

26
задан John Saunders 19 February 2013 в 13:59
поделиться

7 ответов

Вы можете использовать что-то вроде это :

Private Sub PrintTableOrView(ByVal table As DataTable, ByVal label As String)
    Dim sw As System.IO.StringWriter
    Dim output As String

    Console.WriteLine(label)

    ' Loop through each row in the table. '
    For Each row As DataRow In table.Rows
        sw = New System.IO.StringWriter
        ' Loop through each column. '
        For Each col As DataColumn In table.Columns
            ' Output the value of each column's data.
            sw.Write(row(col).ToString() & ", ")
        Next
        output = sw.ToString
        ' Trim off the trailing ", ", so the output looks correct. '
        If output.Length > 2 Then
            output = output.Substring(0, output.Length - 2)
        End If
        ' Display the row in the console window. '
        Console.WriteLine(output)
    Next
    Console.WriteLine()
End Sub
7
ответ дан 28 November 2019 в 06:10
поделиться

Я бы установил PowerShell . Он понимает объекты .NET и имеет Format-Table и Export-CSV, которые сделают именно то, что вы ищете. Если вы занимаетесь какой-либо консольной работой, это отличное дополнение / замена консольным приложениям C #.

Когда я начал его использовать, я переписал свои консольные приложения как библиотеки и импортировал библиотеки в Powershell. Встроенные командлеты делают работу консоли такой приятной.

3
ответ дан 28 November 2019 в 06:10
поделиться

два цикла for, один для строк, другой для столбцов, output dataRow (i) .Value. Остерегайтесь нулей и DbNull.

2
ответ дан 28 November 2019 в 06:10
поделиться
using(var writer = new StringWriter()) {
    results.WriteXml(writer);
    Console.WriteLine(writer.ToString());
}

Конечно, полезность этого зависит от того, насколько важно форматирование. Если это просто отладочный дамп, я считаю, что выходные данные XML очень удобочитаемы. Однако, если форматирование важно для вас, у вас нет другого выбора, кроме как написать свой собственный метод для этого.

15
ответ дан 28 November 2019 в 06:10
поделиться

Или измените приложение на WinForms, используйте сетку и привяжите DataTable к сетка. Если это демонстрационное / примерное приложение.

1
ответ дан 28 November 2019 в 06:10
поделиться

очень расплывчато ....

id вставил его в набор данных просто, чтобы я мог легко вывести его как xml ....

не удалось почему бы не перебрать свои коллекции строк и столбцов и не вывести их?

0
ответ дан 28 November 2019 в 06:10
поделиться
    /// <summary>
    /// Dumps the passed DataSet obj for debugging as list of html tables
    /// </summary>
    /// <param name="msg"> the msg attached </param>
    /// <param name="ds"> the DataSet object passed for Dumping </param>
    /// <returns> the nice looking dump of the DataSet obj in html format</returns>
    public static string DumpHtmlDs(string msg, ref System.Data.DataSet ds)
    {
        StringBuilder objStringBuilder = new StringBuilder();
        objStringBuilder.AppendLine("<html><body>");

        if (ds == null)
        {
            objStringBuilder.AppendLine("Null dataset passed ");
            objStringBuilder.AppendLine("</html></body>");
            WriteIf(objStringBuilder.ToString());
            return objStringBuilder.ToString();
        }

        objStringBuilder.AppendLine("<p>" + msg + " START </p>");
        if (ds != null)
        {
            if (ds.Tables == null)
            {
                objStringBuilder.AppendLine("ds.Tables == null ");
                return objStringBuilder.ToString();
            }


            foreach (System.Data.DataTable dt in ds.Tables)
            {

                if (dt == null)
                {
                    objStringBuilder.AppendLine("ds.Tables == null ");
                    continue;
                }
                objStringBuilder.AppendLine("<table>");

                //objStringBuilder.AppendLine("================= My TableName is  " +
                //dt.TableName + " ========================= START");
                int colNumberInRow = 0;
                objStringBuilder.Append("<tr><th>row number</th>");
                foreach (System.Data.DataColumn dc in dt.Columns)
                {
                    if (dc == null)
                    {
                        objStringBuilder.AppendLine("DataColumn is null ");
                        continue;
                    }


                    objStringBuilder.Append(" <th> |" + colNumberInRow.ToString() + " | ");
                    objStringBuilder.Append(  dc.ColumnName.ToString() + " </th> ");
                    colNumberInRow++;
                } //eof foreach (DataColumn dc in dt.Columns)
                objStringBuilder.Append("</tr>");

                int rowNum = 0;
                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    objStringBuilder.Append("<tr><td> row - | " + rowNum.ToString() + " | </td>");
                    int colNumber = 0;
                    foreach (System.Data.DataColumn dc in dt.Columns)
                    {
                        objStringBuilder.Append(" <td> |" + colNumber + "|" );
                        objStringBuilder.Append(dr[dc].ToString() + "  </td>");
                        colNumber++;
                    } //eof foreach (DataColumn dc in dt.Columns)
                    rowNum++;
                    objStringBuilder.AppendLine(" </tr>");
                }   //eof foreach (DataRow dr in dt.Rows)

                objStringBuilder.AppendLine("</table>");
                objStringBuilder.AppendLine("<p>" + msg + " END </p>");
            }   //eof foreach (DataTable dt in ds.Tables)

        } //eof if ds !=null 
        else
        {

            objStringBuilder.AppendLine("NULL DataSet object passed for debugging !!!");
        }
        return objStringBuilder.ToString();

    } 
1
ответ дан 28 November 2019 в 06:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: