110,533
社区成员
发帖
与我相关
我的任务
分享
DataSet ds = new DataSet();
DataColumn dc = null;
DataTable dt1 = new DataTable("Students");
//设置自增列
dc = dt1.Columns.Add("ID", Type.GetType("System.Int32"));
dc.AutoIncrement = true;
dc.AutoIncrementSeed = 1;
dc.AutoIncrementStep = 1;
//学生名字
dt1.Columns.Add("Name", Type.GetType("System.String"));
//第一志愿
dt1.Columns.Add("1stSchool", Type.GetType("System.String"));
//第二志愿
dt1.Columns.Add("2ndSchool", Type.GetType("System.String"));
//初始化一些数据
dt1.Rows.Add(new object[] { null, "zhangsan", "北大", "武大" });
dt1.Rows.Add(new object[] { null, "lisi", "清华", "复旦" });
dt1.Rows.Add(new object[] { null, "wangwu", "北大", "北语" });
dt1.Rows.Add(new object[] { null, "taier", "南大", "农大" });
DataTable dt2 = new DataTable("Schools");
//设置自增列
dc = dt2.Columns.Add("ID", Type.GetType("System.Int32"));
dc.AutoIncrement = true;
dc.AutoIncrementSeed = 1;
dc.AutoIncrementStep = 1;
//学校名字
dt2.Columns.Add("Name", Type.GetType("System.String"));
//初始化一些数据
dt2.Rows.Add(new object[] { null, "北大" });
dt2.Rows.Add(new object[] { null, "清华" });
dt2.Rows.Add(new object[] { null, "复旦" });
dt2.Rows.Add(new object[] { null, "上戏" });
//添加至DataSet
ds.Tables.Add(dt1); //ds.Tables[0] 学生表
ds.Tables.Add(dt2); //ds.Tables[1] 学校表
//找出校名为"北大"的这一行记录
DataRow dr = ds.Tables[1].Select().SingleOrDefault(s => s["Name"].ToString() == "北大");
//获取第一志愿的学校名字与北大那条记录的名字值相等的记录 即为需要获取的记录
DataRow[] result = ds.Tables[0].Select().Where(s => s["1stSchool"].ToString() == dr["Name"].ToString()).ToArray();
//创建结果表(注:表结构必须与取出记录行的结构一致,否则会报错)
DataTable dtResult = new DataTable();
//自增列
dc = dtResult.Columns.Add("ID", Type.GetType("System.Int32"));
dc.AutoIncrement = true;
dc.AutoIncrementSeed = 1;
dc.AutoIncrementStep = 1;
//学生名字
dtResult.Columns.Add("Name", Type.GetType("System.String"));
//第一志愿
dtResult.Columns.Add("1stSchool", Type.GetType("System.String"));
//第二志愿
dtResult.Columns.Add("2ndSchool", Type.GetType("System.String"));
foreach (var item in result)
{
//获取此行的所有值并添加至新的表(住:无法直接添加该行,会报已属于另一个表的错)
dtResult.Rows.Add(item.ItemArray);
}
//在网格中显示
dataGridView1.DataSource = dtResult;