【发布时间】:2013-09-23 15:51:15
【问题描述】:
我有以下记录的数据表
Columns -> A B C D E
Rows-> 1 2 3 X Y
1 2 3 P Q
我希望将此数据表转换为我的自定义列表,如下所示
MyClass
{
int A
int B
int C
List<ChildClass>
}
ChildClass
{
String D
String E
}
我正在使用以下代码来制作它,但我在子类之间陷入了困境。请帮忙?
IList<MyClass> items = dt.AsEnumerable().Select(row =>
new MyClass
{
A= row.Field<int>("A"),
B= row.Field<int>("B"),
C= row.Field<int>("C"),
}).ToList();
【问题讨论】:
-
我不太符合逻辑。为什么孩子班需要D&E?如果你确实需要它们,为什么需要一个列表?
-
在我的实际应用程序中,MyClass 是我的自定义性能类别,而子类是关联的 CustomCounters。所以因为一个类别可以有多个计数器,因此我需要子类列表。同样会有多个类别。 A、B、C 字段是决定新 MyClass 的唯一因素,这意味着如果 A、B、C 在数据表中具有相同的值,则相应的 D、E 列值应该带有另一个子列表。我希望我现在清楚了吗?
-
我认为您的数据库未正确规范化。您应该考虑将 A、B、C 分组分解为自己的表。 (如果您不确定我的意思,请查看“数据库规范化”)
-
您的自定义列表代码无效。在
MyClass中,您有一个类型为List<ChildClass>的字段,该字段没有名称。另外请澄清您的预期输出,鉴于提供的输入,您是否期望一个 MyClass 列表中包含 2 个 ChildClass?