将DataSet\DataTable转换为CSV

Abr*_*mJP 5 .net c# ado.net

如果有办法从DataTable或DataSet生成CSV文件,请告诉我?具体而言,无需手动迭代DataTable行和连接.

请帮忙

dig*_*All 11

有几种方法可以做到这一点.

其中一个最简单的(IMO)正在使用 FileHelpers Library

FileHelpers.CsvEngine.DataTableToCsv(dataTable, filename);
Run Code Online (Sandbox Code Playgroud)


Ale*_*vic 6

一个相对简单、紧凑且相当灵活的解决方案可能是以下扩展方法:

public static string ToCsv(this DataTable table, string colSep = "", string rowSep = "\r\n")
{
    var format = string.Join(colSep, Enumerable.Range(0, table.Columns.Count)
                                            .Select(i => string.Format("{{{0}}}", i)));

    return string.Join(rowSep, table.Rows.OfType<DataRow>()
                                        .Select(i => string.Format(format, i.ItemArray)));
}
Run Code Online (Sandbox Code Playgroud)

请注意,此解决方案可能会导致大量数据出现问题,在这种情况下,您应该流式传输输出。引用和格式化当然会使代码更加复杂。