我的数据表包含以下记录
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
}
我正在使用以下代码来实现它,但我陷入了for childclass之间。请帮帮忙?
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();
答案 0 :(得分:0)
您应该使用GroupBy
。如下所示。
IList<MyClass> items = dt.AsEnumerable().GroupBy(
row =>
new
{
A = row.Field<int>("A"),
B = row.Field<int>("B"),
C = row.Field<int>("C"),
},
(key, values) =>
new MyClass
{
A = key.A,
B = key.B,
C = key.C,
Children = values.Select(row =>
new ChildClass
{
D = row.Field<string>("D"),
E = row.Field<string>("E"),
}).ToList()
}).ToList();
在您的示例中,这将生成一个MyClass
对象(属性值为1,2,3),其中包含两个ChildClass
个对象(分别具有属性值X,Y和P,Q) )。
答案 1 :(得分:0)
xyz.Select(row=> new Class1
{
A = row.Field<int>("A"),
B = row.Field<int>("B"),
C = row.Field<int>("C"),
list = xyz.Select(row1=> new ChildClass
{
D = row1.Field<int>("D"),
E = row1.Field<int>("E")
}).ToList()
});
假设您有一个数据列表xyz。试试这个有效。