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));
}
}