将关系数据集转换为List <t> </t>

时间:2013-05-24 06:14:14

标签: c# dataset generic-list

将数据集更改为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只创建一个List<Form>,其中包含数据集的数据

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

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

我有Form, Tab, Section, Attribute

的类

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

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

这里有一个将数据表转换为列表的示例,方法是选择所需的列:

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();