列表中的数据表

2023-11-29

我已经下载了包含在List<Row> 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<Row> into a Datatable像这样

DataTable historicalDataTable = ToDataTable<Row>(Rows);

第一个元素List<Row> Rows包含列的名称,其中有七个。那么此后的每个元素都是实际的数据元素。

public static DataTable ToDataTable<T>(List<T> 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 代码实际上将第一行填充为列名称。标题行和数据行之间没有区别

您可以直接将其读入数据表,如下所示:-

(尽管您可能想做更好的错误检查)

var dt = new DataTable("Rows");
string data = "a,b,c\r\n1,2,3\r\n4,5,6";
var stream = GenerateStreamFromString(data); // http://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();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

列表中的数据表 的相关文章

随机推荐

  • Apple 私有 API 被 libarchive 拒绝 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我在用着自由档案库我已将源代码和标头包含在我的 iphone 项目中 Apple 拒绝了该二进制文件 称我错误地将私有 API 用于一堆函数 其中一个这样的函数是 archive r
  • 替换字符串中的 Unicode 转义序列 [重复]

    这个问题在这里已经有答案了 我们有一个文本文件 其中包含以下文本 u5b89 u5fbd u5b5f u5143 当我们在 C NET 中读取文件内容时 它显示如下 u5b89 u5fbd u5b5f u5143 Our 解码器方法 is
  • 指定位置未找到Flutter SDK

    在我更新 Android Studio 以拥有最新的 Flutter 和 Dart 插件后 我现在非常沮丧 现在它告诉我 没有配置 FLutter SDK 当我给它 SKD 路径时 它只是说 在指定位置找不到 Flutter SDK Dar
  • 如何在 Windows 上安装犰狳?

    我需要安装并使用Armadillo库来处理线性代数 我去了他们的网站并下载了 tar xz文件 但我不知道如何安装它 我怎样才能安装Armadillo 我主要使用Dev C 但我有时也使用XCode 如果您使用的是 Windows 则可能会
  • Bio.SeqUtils.molecular_weight() 函数在 molecular_weight 间隔内打印序列时出错

    我正在尝试在 python 中创建一个函数 给定一个 不 模糊的序列 并且分子量间隔返回该序列表示的所有明确序列的列表 我用以下代码尝试了这一点 def extend ambiguous dna file name mw min mw ma
  • JavaScript 正则表达式全局匹配组

    Update 这个问题几乎是重复的this 我确信我的问题的答案就在那里 但我找不到词语来简洁地表达它 我正在尝试使用 JavaScript 正则表达式执行以下操作 var input Warehouse Local Release Loc
  • 在 Fluent Nhibernate 中使用多个数据库,System.TypeInitializationException 未处理

    我试图实施连接多个数据库的 Fluent NHibernate 示例应用程序 我的流利 NHibernate存储库如下 namespace RepositoryExample Repository NHibernate public cla
  • TCP:地址已在使用异常 - 客户端端口的可能原因?没有端口耗尽

    愚蠢的问题 我从连接到服务器的客户端获取这些信息 遗憾的是 设置很复杂 调试也很复杂 而且我们没有其他选择 环境 客户端 服务器系统 两者运行在同一台机器上 客户端实际上是一个在特定时间进行一些数据库操作的服务 连接来自 C 通过 OleD
  • Android 重复通知在应用程序关闭时不起作用

    我想每天在特定时间发送通知 打开应用程序时 代码正在运行 但当它关闭并删除时 通知不会显示 我已经为此使用了广播接收器和服务 代码如下 任何人都可以帮助解决这个问题 清单文件
  • 取消时协程取消注册接收者

    当服务停止时 我的协程泄漏了广播接收器 这是因为服务在回调完成之前停止了 如何以允许我注销接收器的方式取消协程 The Service工作原理如下 class DataCollectorService Service var job Job
  • 组合列表元素

    如何合并 组合列表中的两个或三个元素 例如 如果有两个元素 则列表 l l a b c d e 1 2 3 4 5 被合并到 a 1 b 2 c 3 d 4 e 5 但是如果有三个元素 l a b c d e 1 2 3 4 5 I II
  • Java 准备好的语句未执行

    我创建了一个小型的三层程序 包括 前端 gt servlet gt 数据库 前端我在表单中输入一些详细信息 它们被传递到 servlet 该 servlet 将呈现一些 HTML 并显示输入到表单中的值 同时还调用 DatabaseHelp
  • 根据另一个集合中特定文档的存在情况,将集合中的文档发布到 Meteor 客户端(发布与关系)

    我有两个收藏 优惠 相关字段 id ShareRelations 相关字段 接收者ID and offerId 我只想向登录用户发布已共享给他的优惠 实际上 我是通过使用辅助数组 visibleOffers 来完成此操作 我通过循环每个 S
  • 编码 javascript url 以传递 #(hashtag)

    我将 URL 传递给 PHP 文件 在其中更改一些颜色等 其中一种颜色是 ccc并被传递为 background ccc这破坏了我的 PHP 文件 它停止了我的 GET该主题标签处的参数 之后的所有内容都不会传递 我尝试将我的网址编码为en
  • 反射式 Web 应用程序 (WebIDE)

    Preamble 所以 这个问题已经得到了解答 但由于这是我对该项目的第一个问题 我将继续在我对该项目提出的其他问题中引用它 对于来自另一个问题的任何人 以下是基本想法 创建一个 Web 应用程序 可以使创建其他 Web 应用程序或网站变得
  • 在 Fortran 中查找数组中满足条件的最小值[索引]

    我正在寻找数组中大于某个数字的最小值 我发现这次讨论我不明白 有MINLOC 但看起来它本身并没有达到我想要的效果 尽管我没有解析给定示例中传递给它的参数 也可以使用循环来完成此操作 但可能很笨拙 你可能想要MINVAL 如果你的数组是这样
  • 在处理程序中创建了一个 Promise,但没有从中返回

    我刚刚开始使用 Bluebird Promise 但遇到了一个令人困惑的错误 代码摘要 var jQueryPostJSON function jQueryPostJSON url data return Promise resolve j
  • D3 Y 轴似乎颠倒了

    我正在尝试根据 CSV 文件中的一些数据生成图表 My code
  • 如何检测 Azure 网站上的 HTTPS 重定向?

    根据标题 我有一个 Node js 应用程序 我希望能够检测请求是通过 HTTPS 还是 HTTP 发出 到目前为止我的重定向看起来像这样 Ensure the page is secure or that we are running a
  • 列表中的数据表

    我已经下载了包含在List