我的table结构如下:
PrimaryKey |ColumnDesc |ColumnValue
------------------------------------
Object1 |Name - First |Steve
Object1 |Height - in |60
Object1 |Weight - lbs |180.3
Object2 |Name - First |Edward
Object2 |Height - in |62
Object2 |Weight - lbs |200.0
从数据库中提取数据时,我希望将其从上面的结构转换为对象列表,并使用以下类结构:
public class Person
{
public string Name { get; set; }
public int Height { get; set; }
public double Weight { get; set; }
}
这样就可以将其保存到另一个表(称为person),其结构如下:
PersonId |Name |Height |Weight
---------------------------------
10000 |Steve |60 |180.3
10001 |Edward |62 |200.0
我很难想出最好的办法来做这件事。我设想这样设置一个Map表:
OriginalColumName |NewColumnName|DataType
-----------------------------------------
Name - First |Name |string
Height - in |Height |int
Weight - lbs |Weight |double
方法将根据“primarykey”字段对第一个表结构中的记录进行分组,然后使用Map表和反射将值和类型分配给每个对象。我正在努力想出正确的语法来实现这一点(特别是关于不同的类型),我想知道是否有一种更简洁和逻辑的方式来实现代码中的这一要求。是否已有更好的解决方案,或者是否有人对实现这一目标的最佳途径提出了建议?
2条答案
按热度按时间r7knjye21#
如果第一个表名为table1,那么这将在sql中起作用——您可以在insert语句中使用它来生成person表。
6pp0gazn2#
根据您的数据库和连接数据库的方法,我相信这是数据透视表的好地方:
假设数据透视表测试如下所示:
在sql server中使用透视表时,语法如下所示:
以下是一些有用的链接,可以进一步解释pivot和unpivot:
微软,
Oracle,
编码光