首页 > 解决方案 > 将 Deedle 数据框转换为自定义类的 C# 列表

问题描述

我从外部 API 接收数据作为 Deedle 数据框。我需要获取这些数据并将其转换为要通过实体框架插入数据库的自定义类的列表。

有人能指出我正确的方向吗?我以前没有使用过 Deedle,并且无法找到提取数据的最佳方法。

我需要填充的自定义对象如下所示:

public class FrameData
{
    public string SecurityId { get; set; }
    public string FieldName { get; set; }
    public DateTime Date { set; get; }
    public decimal value { get; set; }
}

谢谢,尼克

标签: c#deedle

解决方案


有很多方法可以从 Deedle 框架中获取数据。实体框架是否允许您使用接口?如果是这样,那么有一个很好的功能GetRowsAs可以让你这样做:

// Given a simple Person interface
public interface Person {
  int Age { get; }
  string Name{ get; }
}

// And a sample data frame with some data
Frame<int, string> df = Frame.FromValues(new[] {
    Tuple.Create(1, "Name", (object) "One"),
    Tuple.Create(2, "Name", (object) "Two"),
    Tuple.Create(1, "Age", (object) 42),
    Tuple.Create(2, "Age", (object) 21)
  });

// You can get an array of rows using 
var rows = df.GetRowsAs<Person>();

如果 Entity Framework 不能处理接口,那么这个方法很遗憾是行不通的。在这种情况下,您将需要以下内容:

var rows = 
    df.Rows.Select(row =>
      new Person { Name = row.Value.GetAs<string>("Name"), 
                   Age = row.Value.GetAs<int>("Age"))).Observations;

推荐阅读