Это удивительно привлекательный (но простой вопрос). Занятия, которые они использовали, с трудом работают. Я придумал базовую реализацию. Он не пытается выровнять строки в правильном столбце, но результат немного приятнее, чем у Juran's.
Главный ответ в методе расширения ToPrettyString()
. Большинство других методов расширения - это просто, чтобы облегчить жизнь из-за недостатков в рамках.
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var ds = new DataSet();
var customersTable = ds.Tables.Add("Customers");
customersTable.Columns.AddRange("FirstName", "LastName", "Id", "Address");
customersTable.Rows.Add("Bob", "Sagget", 1, "123 Mockingbird Lane");
customersTable.Rows.Add("John", "Doe", 2, "1600 Pennsylvanie Ave");
customersTable.Rows.Add("Jane", "Doe", 3, "100 Main St");
Console.WriteLine(ds.ToPrettyString());
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
static class ExtensionMethods
{
public static string ToPrettyString(this DataSet ds)
{
var sb = new StringBuilder();
foreach (var table in ds.Tables.ToList())
{
sb.AppendLine("--" + table.TableName + "--");
sb.AppendLine(String.Join(" | ", table.Columns.ToList()));
foreach (DataRow row in table.Rows)
{
sb.AppendLine(String.Join(" | ", row.ItemArray));
}
sb.AppendLine();
}
return sb.ToString();
}
public static void AddRange(this DataColumnCollection collection, params string[] columns)
{
foreach (var column in columns)
{
collection.Add(column);
}
}
public static List<DataTable> ToList(this DataTableCollection collection)
{
var list = new List<DataTable>();
foreach (var table in collection)
{
list.Add((DataTable)table);
}
return list;
}
public static List<DataColumn> ToList(this DataColumnCollection collection)
{
var list = new List<DataColumn>();
foreach (var column in collection)
{
list.Add((DataColumn)column);
}
return list;
}
}
}
Выход:
--Customers--
FirstName | LastName | Id | Адрес
Боб | Sagget | 1 | 123 Пересморокивая дорожка
John | Доу | 2 | 1600 Pennsylvanie Ave
Jane | Доу | 3 | 100 Main St
Результаты запроса будут в первой таблице (и только таблице) в DataSet. Просто возьмите первую таблицу и запустите петлю строки, распечатав данные. – Tim
Я не совсем понимаю, как это сделать, у вас есть пример? – user2454991
Посмотрите это сообщение и посмотрите, поможет ли это. http://stackoverflow.com/questions/10822304/iterate-through-dataset – Nate