List 中的数据表
我已经下载了List Rows
包含的数据,如下所示:
class Row { string[] Items { get; set; } public Row(string[] Items) { this.Items = Items; } }
行基本上以逗号分隔的条目(.csv)
using (var reader = new StreamReader(spreadSheetStream)) { string header = reader.ReadLine(); //This is the header Rows.Add(new Row(header.Split(','))); while (!reader.EndOfStream) { string tickerInfo = reader.ReadLine(); //This is a data entry Rows.Add(new Row(tickerInfo.Split(','))); } }
我将List
转换为像这样的Datatable
DataTable historicalDataTable = ToDataTable(Rows);
List Rows
的第一个元素包含列的名称,其中包含七个列。 然后,每个元素是实际的数据元素。
public static DataTable ToDataTable(List items) { DataTable dataTable = new DataTable(typeof(T).Name); //Get all the properties PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo prop in Props) { //Setting column names as Property names dataTable.Columns.Add(prop.Name); } foreach (T item in items) { var values = new object[Props.Length]; for (int i = 0; i < Props.Length; i++) { //inserting property values to datatable rows values[i] = Props[i].GetValue(item, null); } dataTable.Rows.Add(values); } //put a breakpoint here and check datatable return dataTable; }
当我尝试写出表的内容时,我看到了正确的行数, 但是ItemArray
没有任何内容
foreach (DataRow dataRow in historicalDataTable.Rows) { Console.WriteLine(dataRow.ToString()); foreach (var item in dataRow.ItemArray) { Console.WriteLine(item); } }
你的代码有点矛盾。 您正在尝试将属性复制为列名,但是您的csv代码实际上将第一行填充为列名。 标题行和数据行之间没有区别
您可以直接将其读入数据表,其中包括: –
(虽然你可能想做更好的错误检查)
上述就是C#学习教程:List 中的数据表分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
var dt = new DataTable("Rows"); string data = "a,b,crn1,2,3rn4,5,6"; var stream = GenerateStreamFromString(data); // https://stackoverflow.com/questions/1879395/how-to-generate-a-stream-from-a-string using (var reader = new StreamReader(stream)) { reader.ReadLine()?.Split(',').ToList().ForEach(h => dt.Columns.Add(h)); while (!reader.EndOfStream) { dt.Rows.Add(reader.ReadLine()?.Split(',').ToArray()); } } foreach (DataColumn dataColumn in dt.Columns) { Console.Write($"{dataColumn.ColumnName} "); } Console.WriteLine(); foreach (DataRow dataRow in dt.Rows) { Console.Write("Row: "); foreach (var item in dataRow.ItemArray) { Console.Write(item + " "); } Console.WriteLine(); }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1025689.html