.net中DataSet属性relations的应用

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
 
namespace connect
{
    class Program
    {
        static void Main(string[] args)
        {
            //建立数据集对象,像数据库一样
            DataSet ds=new DataSet() ;
          
            //建立表
            DataTable dtsb = new DataTable("SB");
            DataTable dtsx = new DataTable("SX");
 
            //SB主表,创建列
            dtsb.Columns.Add(new DataColumn("学号"));
            dtsb.Columns.Add(new DataColumn("姓名"));
            dtsb.Columns.Add(new DataColumn("性别"));
            dtsb.Columns.Add(new DataColumn("总成绩"));
 
            //SX从表,创建列
            dtsx.Columns.Add(new DataColumn("学号"));
            dtsx.Columns.Add(new DataColumn("姓名"));
            dtsx.Columns.Add(new DataColumn("科目"));
            dtsx.Columns.Add(new DataColumn("分成绩"));
 
            //主表数据,创建行
            dtsb.Rows.Add("1","陈一","男","100");
            dtsb.Rows.Add("2", "王二", "女", "90");
            dtsb.Rows.Add("3", "李三", "女", "80");
            dtsb.Rows.Add("4", "赵四", "男", "70");
 
            //从表数据,创建行
            dtsx.Rows.Add("1", "陈一", "语文", "50");
            dtsx.Rows.Add("1", "陈一", "数学", "50");
            dtsx.Rows.Add("2", "王二", "数学", "90");
            dtsx.Rows.Add("3", "李三", "历史", "50");
            dtsx.Rows.Add("3", "李三", "地理", "30");
            dtsx.Rows.Add("4", "赵四", "英文", "70");
 
            //输出主表明细
            Console.WriteLine("我是SB");
            Console.WriteLine("学号   姓名   性别   总成绩");
            foreach (DataRow a in dtsb.Rows)
            {            
                Console.WriteLine("{0}    {1}    {2}    {3}", a[0].ToString().PadRight (4,' '),a[1],a[2].ToString().PadRight (4,' '),a[3]);
            }
 
            Console.WriteLine("");
 
            //输出从表明细
            Console.WriteLine("我是SX");
            Console.WriteLine("学号   姓名   科目   分成绩");
            foreach (DataRow a in dtsx.Rows)
            {
                Console.WriteLine("{0}    {1}    {2}    {3}", a[0].ToString().PadRight (4, ' '), a[1], a[2].ToString().PadRight(4, ' '), a[3]);
            }
 
            Console.WriteLine("");
 
            //把表添加到dataset
            ds.Tables.Add(dtsb);
            ds.Tables.Add(dtsx);
 
            //创建关系,以学号为主键
            ds.Relations.Add("SBX", ds.Tables["SB"].Columns["学号"], ds.Tables["SX"].Columns["学号"]);
 
            //历遍主表所有行,将其赋值给drsb
            foreach (DataRow drsb in ds.Relations["SBX"].ParentTable.Rows)
            {
                Console.WriteLine("{0}  {1}  {2}  {3}", drsb[0], drsb[1], drsb[2], drsb[3]);
 
                //历遍drsb所有子行,将其赋值给drsx
                foreach (DataRow drsx in drsb.GetChildRows("SBX"))
                {
                    Console.WriteLine("    {0}  {1}  {2}  {3}",drsx[0],drsx[1],drsx[2],drsx[3]);
                }
            }
                      
        }
    }
}

运行结果:


转自:http://guangguang.163.blog.163.com/blog/static/3295349020100812542109/

你可能感兴趣的:(.net中DataSet属性relations的应用)