3

将数据集更改为List<Form>

数据集有 4 个表,每个表都与其他表有关系

ds.Relations.Add("Form_To_Tab", ds.Tables[0].Columns["Id"],
                                       ds.Tables[1].Columns["FormId"]);
ds.Relations.Add("Tab_To_Section", ds.Tables[1].Columns["Id"],
                                       ds.Tables[2].Columns["TabId"]);
ds.Relations.Add("Section_To_Attribute", ds.Tables[2].Columns["Id"],
                                       ds.Tables[3].Columns["SectionId"]);

我想从数据库创建一个列表,只创建一个List<Form>包含数据集数据的列表

List<Form> -> List<Tab> -> List<Section> -> List<Attributes>

IE: Class Form 的属性为List<Tab>, Class Tab 的属性为List<Section>

我有类Form, Tab, Section, Attribute

类包含相关数据表的所有列作为属性

4

2 回答 2

2

您可以通过数据集中的关系递归地选择所有数据,如下所示:

        var result =
            (from form in data.Tables["form"].Rows.Cast<DataRow>()
            select
                new Form
                {
                    Tabs = 
                        (
                        from tab in form.GetChildRows("Form_To_Tab")
                        select 
                            new Tab
                            {
                                // and so on
                            }).ToList()
                }).ToList();
于 2013-05-24T06:33:32.857 回答
1

在这里,您有一个示例,可以通过选择所需的列将 Datatable 转换为列表:

var myData = ds.Tables[0].AsEnumerable().Select(r => new {
    column1 = r.Field<string>("FormId")       
});
var list = myData.ToList(); 


var myData2 = ds.Tables[1].AsEnumerable().Select(r => new {
    column1 = r.Field<string>("TabId"),

});

var list2 = myData2 .ToList();
于 2013-05-24T06:18:49.900 回答