将DataTable转换为List <t>时,如何处理多个列映射

时间:2015-09-29 15:34:24

标签: c# .net-4.5

目前,我有一个数据表并使用ForEach循环它并构建对象以添加到我的列表List<MyClass>

不幸的是,这种方法需要为每种类型使用单独的方法来处理列映射。数据表中的列与对象属性的名称不同。

如何创建通用方法来实现列映射?理想情况下类似于通用BuildObjects<T>方法,可以处理BuildObjects<Car>BuildObjects<Dog>BuildObjects<Tree>并将行列映射到对象属性。

2 个答案:

答案 0 :(得分:1)

好吧,BuildObjects 是通用的,因为每种类型的实现都不同。

更好的方法是使用BuildCarBuildTreeBuildDog等方法。然后,您可以遍历数据表并根据表中的任何数据调用适当的方法,告诉您输出类型是什么。

答案 1 :(得分:0)

您可以在类的对象属性上定义属性。 (这些可能包含映射到数据库列名的列)。从那里,您可以使用已定义的属性获取该类的所有属性,如:

How to get a list of properties with a given attribute?

然后您可以使用反射来创建具有所需值的对象。