Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将数据集转换为StringBuilder_C#_Asp.net_Asp.net Core - Fatal编程技术网

C# 如何将数据集转换为StringBuilder

C# 如何将数据集转换为StringBuilder,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,我有一个数据集,其中有4个唯一的表。我想将整个数据集转换为StringBuilder DataTable fileData = ***Some Data*** if (fileData.Rows.Count == 0) return (true, "No Records"); StringBuilder builder = new StringBuilder(); IEnumerable<string> columnNames = fileData .Columns

我有一个
数据集
,其中有4个唯一的表。我想将整个
数据集
转换为
StringBuilder

DataTable fileData = ***Some Data***

if (fileData.Rows.Count == 0) 
  return (true, "No Records");

StringBuilder builder = new StringBuilder();

IEnumerable<string> columnNames = fileData
   .Columns
   .Cast<DataColumn>()
   .Select(column => column.ColumnName);

builder.AppendLine(string.Join("|", columnNames));

foreach (DataRow row in fileData.Rows)
{
  IEnumerable<string> fields = row.ItemArray
    .Select(field => RemoveSpecialCharacters(field
       ?.ToString()
        .Replace(",",";"))); 

  builder.AppendLine(string.Join("|", fields));
}
我知道我们可以使用下面的代码将
DataTable
转换为
StringBuilder

DataTable fileData = ***Some Data***

if (fileData.Rows.Count == 0) 
  return (true, "No Records");

StringBuilder builder = new StringBuilder();

IEnumerable<string> columnNames = fileData
   .Columns
   .Cast<DataColumn>()
   .Select(column => column.ColumnName);

builder.AppendLine(string.Join("|", columnNames));

foreach (DataRow row in fileData.Rows)
{
  IEnumerable<string> fields = row.ItemArray
    .Select(field => RemoveSpecialCharacters(field
       ?.ToString()
        .Replace(",",";"))); 

  builder.AppendLine(string.Join("|", fields));
}
我正在使用
fileDataStream
生成excel。 上面的代码将
数据表
转换为流,现在我想将
数据集
转换为
,这样我就可以使用新的
数据集
数据)生成excel

更新2:

                var byteArray = ec.GetBytes(builder.ToString());
                var fileDataStream = new MemoryStream(byteArray);
我在
DataSet
中使用了下面的代码,但仅使用了
DataSet
中存储在
StringBuilder
中的最后一个表数据,而不是所有4个表数据

                   foreach (DataTable dt in dataSetFileDetails.Tables)
                    {
                        if (dt.Rows.Count == 0) return (true, "No Records");
                        builder = new StringBuilder();
                        IEnumerable<string> columnNames = dt.Columns.Cast<DataColumn>().
                                                          Select(column => column.ColumnName);
                        builder.AppendLine(string.Join("|", columnNames));

                        foreach (DataRow row in dt.Rows)
                        {
                            IEnumerable<string> fields = row.ItemArray.Select(field => RemoveSpecialCharacters(field?.ToString().Replace(",", ";")));
                            builder.AppendLine(string.Join("|", fields));
                        }
                    }
foreach(dataSetFileDetails.Tables中的DataTable dt)
{
如果(dt.Rows.Count==0)返回(true,“无记录”);
生成器=新的StringBuilder();
IEnumerable columnNames=dt.Columns.Cast()。
选择(column=>column.ColumnName);
builder.AppendLine(string.Join(“|”,columnNames));
foreach(数据行中的数据行)
{
IEnumerable fields=row.ItemArray.Select(field=>RemoveSpecialCharacters(field?.ToString().Replace(“,”,“;”)));
builder.AppendLine(string.Join(“|”,字段));
}
}

在数据集的DataTable属性上循环

StringBuilder sb = new StringBuilder();

foreach(var table in DataSet.DataTable)
{
    YourCode(sb);
}

void YourCode(StringBuilder stringBuilder)
{
    DataTable fileData = ***Some Data***

    if (fileData.Rows.Count == 0) 
        return (true, "No Records");

    IEnumerable<string> columnNames = fileData
        .Columns
        .Cast<DataColumn>()
        .Select(column => column.ColumnName);

    stringBuilder.AppendLine(string.Join("|", columnNames));

    foreach (DataRow row in fileData.Rows)
    {
        IEnumerable<string> fields = row.ItemArray
            .Select(field => RemoveSpecialCharacters(field?.ToString().Replace(",",";"))); 

        stringBuilder.AppendLine(string.Join("|", fields));
    }
}
StringBuilder sb=新建StringBuilder();
foreach(DataSet.DataTable中的var表)
{
你的代码(sb);
}
作废您的代码(StringBuilder StringBuilder)
{
DataTable fileData=***某些数据***
if(fileData.Rows.Count==0)
返回(正确,“无记录”);
IEnumerable columnNames=文件数据
.栏目
.Cast()
.Select(column=>column.ColumnName);
stringBuilder.AppendLine(string.Join(“|”,columnNames));
foreach(fileData.Rows中的DataRow行)
{
IEnumerable fields=row.ItemArray
.Select(field=>RemoveSpecialCharacters(field?.ToString().Replace(“,”,“;”)));
stringBuilder.AppendLine(string.Join(“|”,字段));
}
}

在数据集的DataTable属性上循环

StringBuilder sb = new StringBuilder();

foreach(var table in DataSet.DataTable)
{
    YourCode(sb);
}

void YourCode(StringBuilder stringBuilder)
{
    DataTable fileData = ***Some Data***

    if (fileData.Rows.Count == 0) 
        return (true, "No Records");

    IEnumerable<string> columnNames = fileData
        .Columns
        .Cast<DataColumn>()
        .Select(column => column.ColumnName);

    stringBuilder.AppendLine(string.Join("|", columnNames));

    foreach (DataRow row in fileData.Rows)
    {
        IEnumerable<string> fields = row.ItemArray
            .Select(field => RemoveSpecialCharacters(field?.ToString().Replace(",",";"))); 

        stringBuilder.AppendLine(string.Join("|", fields));
    }
}
StringBuilder sb=新建StringBuilder();
foreach(DataSet.DataTable中的var表)
{
你的代码(sb);
}
作废您的代码(StringBuilder StringBuilder)
{
DataTable fileData=***某些数据***
if(fileData.Rows.Count==0)
返回(正确,“无记录”);
IEnumerable columnNames=文件数据
.栏目
.Cast()
.Select(column=>column.ColumnName);
stringBuilder.AppendLine(string.Join(“|”,columnNames));
foreach(fileData.Rows中的DataRow行)
{
IEnumerable fields=row.ItemArray
.Select(field=>RemoveSpecialCharacters(field?.ToString().Replace(“,”,“;”)));
stringBuilder.AppendLine(string.Join(“|”,字段));
}
}

这不是对您问题的直接回答,因为转换为StringBuilder没有意义。但是,您是说,您可以这样做来生成Excel。我建议您使用nuget的EPPlus库

假设您有一个名为ds的数据集:

ExcelPackage pck = new ExcelPackage();
foreach (DataTable table in ds.Tables)
{
    var ws = pck.Workbook.Worksheets.Add(table.TableName);
    ws.Cells["A1"].LoadFromDataTable(table, true);
}

var fi = new FileInfo(@"c:\temp\MyExcelDataSet.xlsx");
if (fi.Exists)
{
    fi.Delete();
}
pck.SaveAs(fi);

这不是对您问题的直接回答,因为转换为StringBuilder没有意义。但是,您是说,您可以这样做来生成Excel。我建议您使用nuget的EPPlus库

假设您有一个名为ds的数据集:

ExcelPackage pck = new ExcelPackage();
foreach (DataTable table in ds.Tables)
{
    var ws = pck.Workbook.Worksheets.Add(table.TableName);
    ws.Cells["A1"].LoadFromDataTable(table, true);
}

var fi = new FileInfo(@"c:\temp\MyExcelDataSet.xlsx");
if (fi.Exists)
{
    fi.Delete();
}
pck.SaveAs(fi);

您的意思是使用
StringBuilder
将数据集转换为管道分隔字符串吗?您可以通过已具有代码的DataSet.Tables属性(请参阅:)访问DataTable对象。转换为StringBuilder意味着什么?可以使用WriteXML获取整个数据集的字符串表示(XML)。或者,您可以使用Linq To CSV作为CSV输出(看起来就像您正在尝试做的事情)。您所需要的只是在dataset中循环表。啊,您正在尝试从流创建excel。然后查看Excel的Ado.Stream和CopyFromRecordSet。它们是现成的功能。您也可以直接使用Linq To Excel或ADO.net来创建Excel文件。或者更简单,使用Nuget中的EPPLus并将集合(表)放在工作表上。您的意思是使用
StringBuilder
“将数据集转换为管道分隔字符串”的可能重复项?您可以通过DataSet.tables属性访问DataTable对象(请参阅:)您已经有了代码。转换为StringBuilder意味着什么?可以使用WriteXML获取整个数据集的字符串表示(XML)。或者,您可以使用Linq To CSV作为CSV输出(看起来就像您正在尝试做的事情)。您所需要的只是在dataset中循环表。啊,您正在尝试从流创建excel。然后查看Excel的Ado.Stream和CopyFromRecordSet。它们是现成的功能。您也可以直接使用Linq To Excel或ADO.net来创建Excel文件。或者更简单一些,使用Nuget的ePlus并将您的集合(表)放到工作表上