【发布时间】:2018-03-04 00:46:13
【问题描述】:
在我的示例中,我尝试使用给定的项目源查看网格控件中的关键信息。在这种情况下,要传递项目源,我需要在 C# 中将 DataTable 转换为 IList<myType>。
我已经尝试了所有传统的转换方法,包括下面的代码将DataTable转换为IList。
dt.AsEnumerable().Cast<object>().ToList()
但是所有传统方法对我没有帮助,因为我不知道在DataTable 的各个列中使用了哪些对象以及它们的类型。 DataTable 也有更多的列和行。
例如,我的数据表中有以下列值。
PlanRowPID,PlanRowClass,PlanRowVendor,PlanRowColor
PID 0,CLASS 8,VENDOR A,COLOR D
PID 1,CLASS 7,VENDOR B,COLOR C
PID 2,CLASS 9,VENDOR C,COLOR B
PID 3,CLASS 6,VENDOR D,COLOR B
最后我想以编程方式执行以下操作,
IList<myType> list = new IList<myType>;
list.Add(new myType() {PlanRowPID = "PID 0",PlanRowClass = "CLASS 8",PlanRowVendor = "VENDOR A",PlanRowColor=COLOR D});
list.Add(new myType() {PlanRowPID = "PID 1",PlanRowClass = "CLASS 7",PlanRowVendor = "VENDOR B",PlanRowColor=COLOR C});
list.Add(new myType() {PlanRowPID = "PID 2",PlanRowClass = "CLASS 9",PlanRowVendor = "VENDOR C",PlanRowColor=COLOR B});
在我的应用程序中,我有超过 10000 个数据列,因此无法将数据表中的每个对象都添加到列表中。我需要花费更多的时间和知识来查找 @ 中可用的每个列的数据类型987654331@,然后根据 myType 类的类型创建属性。
所以请提供任何最佳和最快的方法将DataTable 转换为IList<myType>。
【问题讨论】:
-
您是否尝试过使用像实体框架这样的 ORM?
-
是的,但 ORM 仅在我的实体数量较少时才有用。如果我有更多实体,则很难通过查找每列的数据类型来创建类。我需要编程的方式来查找类型并有效地创建类。
-
您能告诉我们为什么您有 10,000 列吗?
标签: c# wpf list datatable ienumerable