首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET 5.0 -将矩阵结构类型(数据表)转换为单个记录

.NET 5.0 -将矩阵结构类型(数据表)转换为单个记录
EN

Stack Overflow用户
提问于 2022-09-02 11:50:25
回答 1查看 42关注 0票数 1

我有一个服务,该服务当前使用这种结构返回System.DataTable:附数据表

我需要将这种类型的结构转换成如下所示的模型:

代码语言:javascript
复制
    [Required]
    public string Field { get; set; }
    
    [Required]
    [StringLength(500)]
    public string Identifier { get; set; }

    public string? FieldValue { get; set; }

最后一个模型是数据库模型。我目前正在通过datatable记录进行迭代。在1000到10000条记录中可以正常工作,但是当解析100000和更多记录时,它会变得很慢。如果我能够将datatable结构大容量地放到数据库中,那将是很棒的,但是字段列会发生变化,这会使它变得更加复杂。

此外,如果需要而不是DataFrame,我可以返回DataTable。我认为转换DataFrame比较容易,但这里要注意的是,标识符列需要保留,而不是被转换为字段列。

EN

回答 1

Stack Overflow用户

发布于 2022-09-03 16:53:10

您可以创建一个扩展方法,并像下面这样使用,但不确定性能

代码语言:javascript
复制
//dt object of Datatable
var entities = dt.Transpose("SECURITIES");


public static class DataTableTranspose
{
    public static IList<MyEntity> Transpose(this DataTable dataTable, string indentifierColumn)
    {
        var entities = new List<MyEntity>();
        if (dataTable is null || dataTable.Rows.Count == 0 || string.IsNullOrWhiteSpace(indentifierColumn))
            return entities;
        
        for (int i = 0; i < dataTable.Rows.Count; i++)
        {
            var entity = new MyEntity()
            {
                Identifier = dataTable.Rows[i][indentifierColumn].ToString()
            };
            for (int j = 0; j < dataTable.Columns.Count; j++)
            {
                if (dataTable.Columns[j].ColumnName != indentifierColumn)
                {
                    entity.Field = dataTable.Columns[j].ColumnName;
                    entity.FieldValue = dataTable.Rows[i][j].ToString();
                }
            }
            entities.Add(entity);
        }

        return entities;
    }
    public class MyEntity
  {
    public string Field { get; set; }
    public string Identifier { get; set; }

    public string? FieldValue { get; set; }
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73582124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档