I have a DataSet
having 4 Unique tables in it. I want to convert entire DataSet
into StringBuilder
.
I know we can use below code to convert DataTable
to 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));
}
How can use above code for DataSet
data.
Edit:
var byteArray = ec.GetBytes(builder.ToString());
var fileDataStream = new MemoryStream(byteArray);
I'm using fileDataStream
to generate excel.
Above code will convert DataTable
to Stream, now I want to convert DataSet
to Stream
, so that I can use that new stream
(DataSet
data) to generate excel.
Update 2:
I have used below code with DataSet
but only last table data of DataSet
stored in StringBuilder
not all 4 tables data.
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));
}
}