/// <summary> /// convert csv stream data to dataTable /// </summary> /// <param name="stream">stream</param> public static DataTable ToDataTable(Stream stream) { if (stream is null) { throw new ArgumentNullException(nameof(stream)); } var dt = new DataTable(); if (stream.CanRead) { using var sr = new StreamReader(stream, Encoding.UTF8); string strLine; var isFirst = true; while ((strLine = sr.ReadLine() !).IsNotNullOrEmpty()) { var rowData = ParseLine(strLine); var dtColumns = rowData.Count; if (isFirst) { for (var i = 0; i < dtColumns; i++) { var columnName = rowData[i]; if (dt.Columns.Contains(columnName)) { columnName = InternalHelper.GetEncodedColumnName(columnName); } dt.Columns.Add(columnName); } isFirst = false; } else { var dataRow = dt.NewRow(); for (var j = 0; j < dt.Columns.Count; j++) { dataRow[j] = rowData[j]; } dt.Rows.Add(dataRow); } } } return(dt); }