利用DataRelation关系两个表,怎么从两个表中查询呢?

yhp 2005-06-29 03:52:56
有两个表:
task:
id //主键id
name //名称
status //状态
executeinfo:
id //主键id
taskid //和task表的id字段关联
starttime //开始时间
目前把这两个表的数据到读到了两个DataTable中了,dtTask和dtExecuteInfo。而且也都增加到了名为dsTask的DataSet中了。也根据id和taskid建立了DataRelation。现在我需要根据dtTask的status条件和dtExecuteInfo的starttime 条件一次搜索出dtExecuteInfo的数据。该怎么实现呢?
用sql语句可以很方便的取出。即:
select a.id,a.name,b.starttime from task a,executeinfo b
where b.taskid=a.id(+)
and a.status=条件1
and b.starttime<=to_date('条件2','yyyy-MM-dd')
...全文
167 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mba9001 2005-06-30
  • 打赏
  • 举报
回复
up
zhongwanli 2005-06-30
  • 打赏
  • 举报
回复
估计也只有用 Saucer 老大说的那样子的了
yegucheng 2005-06-30
  • 打赏
  • 举报
回复
学习
marvelstack 2005-06-30
  • 打赏
  • 举报
回复
建议使用ado.net表达式实现会比较简洁,
看下面文章,
http://www.microsoft.com/china/MSDN/library/data/dataAccess/ADONETEXP.mspx
saucer 2005-06-30
  • 打赏
  • 举报
回复
in ado.net, if you need to do a join programmtically, look into

HOW TO: Implement a DataSet JOIN helper class in Visual C# .NET
http://support.microsoft.com/kb/326080/EN-US/

otherwise, you have to do something like

string sRelation = "Take-ExecuteInfo";

DataSet ds = ..;
da.Fill(ds,"task");
da.Fill(ds,"executeinfo");

DataTable dtTask = ds.Tables["task"];
DataTable dtExecuteInfo = ds.Tables["executeinfo"];

ds.Relations.Add(sRelation , dtTask.Columns["id"], dtExecuteInfo.Columns["taskid"]);
DataView dv = new DataView(dtTask);
dv.RowFilter = "status='条件1'";
foreach (int i=0; i < dv.Count; i++)
{
DataRow[] drs = dv[i].Row.GetChildRows(sRelation);
//if only we could construct a DataView here, then our life is easy, otherwise, you have to do
foreach (DataRow dr in drs)
{
//check dr's starttime here
}
}
yhp 2005-06-29
  • 打赏
  • 举报
回复
由于数据已经读到了客户端,从性能考虑,不想再根据sql语句从服务器获取,而是直接从两个DataTable来获取。

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧