废话不说代码如下,注释很详细

Code
DataSet ds = new DataSet();
//提取第一个表 放在ds中
dp.CommandText = "SELECT * FROM ss_RolesInAction";
ds.Tables.Add(dp.ExecuteDataTable("ss_RolesInAction"));
//提取第二个表 放在ds中
dp.CommandText = "SELECT * FROM ss_Action";
ds.Tables.Add(dp.ExecuteDataTable("ss_Action"));
//提取第三个表 放在ds中
dp.CommandText = "SELECT * FROM as_SiteMap";
ds.Tables.Add(dp.ExecuteDataTable("as_SiteMap"));
//建立关系 ss_Action.FID = ss_RolesInAction.FActionID ,ss_RolesInAction.FActionID为外键
ds.Relations.Add("relation1", ds.Tables[1].Columns["FID"], ds.Tables[0].Columns["FActionID"]);
//建立关系 as_SiteMap.ID = ss_RolesInAction.FNodeID ,ss_RolesInAction.FNodeID 为外键
ds.Relations.Add("relation2", ds.Tables[2].Columns["ID"], ds.Tables[0].Columns["FNodeID"]);
//查询条件测试1:对父表查询获取子表测试
//条件为 ss_Action.FID 等于 6E7BB6B5-4DDA-4BB9-A156-71288CEF16B2 的或是 ss_RolesInAction.FActionID 等于 DB893F4E-B411-4FC0-9735-D5E9B7823083 或是 as_SiteMap.id 等于7的
//因为已经建立三个表的关系,所以,无论查询条件是什么 都会跟上 关系中的条件 即:
//ss_Action.FID = ss_RolesInAction.FActionID AND as_SiteMap.ID = ss_RolesInAction.FNodeID
//当我们指定的查询条件为空时会 根据 关联关系查询 以下条件中的 完整关联关系是这样的
//(ss_Action.FID = ss_RolesInAction.FActionID AND as_SiteMap.ID = ss_RolesInAction.FNodeID ) and ss_Action.FID='6E7BB6B5-4DDA-4BB9-A156-71288CEF16B2' or ss_RolesInAction.FActionID= 'DB893F4E-B411-4FC0-9735-D5E9B7823083' or as_SiteMap.id=7
DataView dv = ds.Tables[0].DefaultView;
dv.RowFilter = "parent(relation1).FID='6E7BB6B5-4DDA-4BB9-A156-71288CEF16B2' or FActionID= 'DB893F4E-B411-4FC0-9735-D5E9B7823083' or parent(relation2).id=7";
//查询条件测试2:对子表查询获取父表测试
//因为子表与父表是 多对一 的关系所以 我们对子表查询时 会返回多个值所以 使用 MAX 函数
DataView dv = ds.Tables[1].DefaultView;
dv.RowFilter = "max(child(relation1).FActionID) in ('FFD953C4-0920-4558-B87F-3A25CFB15754','FC5C91F5-45ED-4B3E-8E14-C2391B9A6B14') ";//这个查询条件中无法关联 as_SiteMap查询条件 因为没有 查询表 as_SiteMap和返回表 ss_Action 的条件
this.GridView1.DataSource = dv;
this.GridView1.DataBind();
//详细的查询语法请参照:http://www.cnblogs.com/ejiyuan/archive/2006/11/22/568170.html
posted @
2009-02-24 11:00
ejiyuan
阅读(
3335)
评论()
编辑
收藏
举报
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述