Csharp/C#教程:List 中的数据表分享


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

www.ctvol.com true Article Csharp/C#教程:List 中的数据表分享

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1025689.html

(0)
上一篇 2022年1月8日 下午6:05
下一篇 2022年1月8日 下午6:09

精彩推荐