【问题标题】:Convert request body to datatable or dataset in C#在 C# 中将请求正文转换为数据表或数据集
【发布时间】:2021-05-16 19:57:05
【问题描述】:

我正在制作一个带有请求正文的天蓝色函数。格式如下。

"10","姓名","112","50012","活动","08/02/2021","3:20","3:10","" "10","姓名","","","休息","08/02/2021","-","0:11","休息" "10","姓名","112","50012","活动","08/02/2021","2:09","2:09",""

第一对字符串是工人 ID,第二个是姓名,第三个是客户的 id,第四个是活动 id,第五个是活动,第六个是日期,第七个是原始工作小时数, 8th 是计算的工作小时数,最后表示是否是休息时间。

简而言之,每行有 9 组字符串,不知道有多少行。现在我想将其转换为数据表,然后转换为数据集。到目前为止,我只能像这样阅读正文。

        using(var reader = new StreamReader(req.Body))
        {
            var ResponseBody = reader.ReadToEnd();

            return Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK));
        }

我希望你能帮助我。提前致谢。

【问题讨论】:

  • DataTables 并不是特别难创建 - 你创建一个新的 - var dt = new DataTable(),你重复做 dt.Columns.Add("Name",typeof(T)) 其中 T 就像 stringint 等 - 在你的 9 次情况下,然后您反复使用您的数据行执行dt.Rows.Add(nine,items,of,data,from,your,csv,go,here)。试一试,所以我们感觉不像你说的“为我编写程序”
  • 查找 CSV 阅读器。我也很好奇你为什么要使用 DataTable
  • @Flydog57 我想将数据表转换为 XML 工作簿
  • @CaiusJard 我了解它是如何工作的,但它是一整套字符串,我不知道如何遍历行。我确实知道如何添加行和列
  • 因此数据会按照您的问题发布到您的函数中。只是几行 CSV 文本。然后只需将其包装在StreamReader 中并使用ReadLineAsync 直到没有内容可供阅读。您真的应该查找CSVHelper nuget 包。

标签: c# datatable dataset


【解决方案1】:

我建议您使用示例方法,您可以将其作为解决实际问题的参考。

所以你必须逐行读取数据并拆分数据。

DataTable dt = new DataTable();
string[] columns = [];//column names as you have mentioned in your data there are no columns 
foreach (string column in columns)
{
    dt.Columns.Add(column);
}
using (StreamReader reader = new StreamReader(strFilePath))
{
    while (reader.EndOfStream == false)
    {
        string[] rows = reader.ReadLine().Split(',');
        DataRow dr = dt.NewRow();
        for (int i = 0; i < columns.Length; i++)
        {
            dr[i] = rows[i];
        }
        dt.Rows.Add(dr);
    }
}

假设:我假设您的值之间没有逗号

【讨论】:

  • 如果数据是"hello", "how", "are", "you, vivek?"怎么办
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 2015-08-16
  • 2011-01-28
  • 2014-05-14
  • 2017-08-05
  • 1970-01-01
相关资源
最近更新 更多