有两个DataTable:ta和tbta的字段有
Id  Nametb的字段有
taIdta.Id 和 tb.taId 是关联的
如何把tb中所有内容对应ta中的名字放到一个新的DataView中举例
ta:
1 Nokia
2 Moto
3 NECtb:
1
3新的DataView中的内容为
Nokia
NEC

解决方案 »

  1.   

    使用查询select name from ta where id in(select tbid from tb)
      

  2.   

    建议你还是在sql里解决,比如用sql语句:select ta.name from ta,tb where ta.id=tb.taid
      

  3.   

    数据库里面建个视图,把你需要的字段选好。你就用建好的视图作为datatable
      

  4.   

    不要使用一楼那个SQL语句,效率太低了!
      

  5.   

    我问的不是数据库操作
    是内存中已经有两个表了
    如何再生成新的dataview
    因为我的tb也不是数据库中读出来的
      

  6.   

    先把两个数据合并成一个datatable,再向dataview里面添加
    -----------------
    如何向一个新建的DataTable写入已知的DataTable的指定列数据?
    已知DataTable    dt1  
     
    A1      A2      A3      A4  
    -----------------  
    1        JD      DI      VB  
    2        FJ      JF      KF  
    3        FD      JF      DA  
     
    新建的Datable  dt2  
     
    B1      B2      B3      
    ------------  
    Datatable    dt2  =  new  DataTable();  
    dt2.Columns.Add("B1",typeof(string));  
    dt2.Columns.Add("B2",typeof(string));  
    dt2.Columns.Add("B3",typeof(string));  
    foreach(  DataRow  row  in  dt1.Rows  )  
    {  
         dt2.Rows.Add(  new  object[]{row["A2"],row["A3"],row[A4"]};  
    }  ..................余下的就自己写吧
    ----------------------------------------------------------------------
    欢迎试用ASP.NET大文件上传组件(UpLoadModule 1.2.2004.0805 & 无刷新进度条)
    http://www.cnblogs.com/lion.net/archive/2004/08/06/30679.aspx
    UpLoadModule为您提供了这样的一个方案,该方案除了允许你上传大文件外,还能实时显示上传进度并捕获上传中的错误信息。允许无商业目的个人用户免费使用。
    ----------------------------------------------------------------------
    欢迎试用HtmlEditor(Version 3.1.2004.0808在线文本编辑器)
    http://www.cnblogs.com/lion.net/archive/2004/08/10/31784.aspx
    她是一个网页的在线文本编辑器,她能够在网页上实现许多桌面编辑软件(如:Word)所具有的强大可视编辑功能;她是一个真正的绿色软件,不需要在计算机上安装任何的客户端软件;并且她是完全开放源代码的,允许无商业目的个人用户免费使用。
    ----------------------------------------------------------------------
      

  7.   

    可以使用SQL语句
    还有:
    1、DataSet的DataRelation创建关联关系
    2、利用 DataTable的Select创建行集合
    ...
      

  8.   

    好象没有现成的方法了,只有自己写段程序处理了。
    算法很简单,在ta里select()tb中的每个记录,把符合条件的插到一个新的table里。
      

  9.   

    to 狮子(三千溺水,独取一瓢清泉)
    你没看懂我的问题
    我是要显示tb中所有taid对应ta中id的name
    不是把 id 去掉,然后把name放到一个新的表中
      

  10.   

    to:xrll() ( )
    DataRelation关联关系我已经创建了
    如何利用它?to:gshope(北京.Net)
    具体如何做?
    如何select那么多tb中的taid?
      

  11.   

    我只写算法,具体语法你自己写:
    DataRow[] Rows;
    for(i=0;i<tb.Rows.Count,i++)
    {
      Rows=ta.Select("id="+td.Rows[i]["taid"].ToString());
      GetData(Rows);
      Rows.Clear();
    }GetData方法把Rows中的DataRow插到一个新的DataTable中
      

  12.   

    这类关系表处理的方法很多,包括DataView的RowFilter,主要是看你的用途和表示方法,DataRelation和RowFilter在嵌套和主从表方面比较方便,如果仅是得到过滤后的表,狮子(三千溺水,独取一瓢清泉) 的方法比较好!tb.Columns.Add("name",typeof(string));
    foreach(DataRow myRow in tb.Rows)
    {
     myRow["name"] = ta.Select("taid="+myRow["id"].ToString())[0]["taname"];
    }
    新的tb表包含需要的内容  
    DataRelation、RowFilter的使用可以参考下面的例子:
      

  13.   

    http://www.c-sharpcorner.com/asp/Articles/MasterDetailDCHK.asp
    http://www.xmlforasp.net/codeSection.aspx?csID=35
      

  14.   

    又重新按楼主的要求做了一个例子:test.aspx
    ------------------------
    <%@ Page language="c#" Codebehind="text.aspx.cs" Src="text.aspx.cs" AutoEventWireup="false" Inherits="CSDN.ProjectManage.Manager.text" %>
    <html>
      <head>
        <title>欢迎光临 Lion 互动网络</title>
      </head>
      <body>

        <form id="Form1" method="post">     </form>

      </body>
    </html>
    test.aspx.cn
    -------------------------------------
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace CSDN.ProjectManage.Manager
    {
    /// <summary>
    /// text 的摘要说明。
    /// </summary>
    public class text : System.Web.UI.Page
    {
    #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    DataTable DT = new DataTable();
    DataTable tempdt1 = Init_Table1();
    DataTable tempdt2 = Init_Table2();
    //获取tempdt2中和tempdt1中相同的 Columns
    for(int i=0;i<tempdt1.Columns.Count;i++)
    {
    if(tempdt2.Columns[tempdt1.Columns[i].ColumnName]!=null && tempdt1.Columns[i].DataType.Equals(tempdt2.Columns[tempdt1.Columns[i].ColumnName].DataType))
    {
    DT.Columns.Add(new DataColumn(tempdt1.Columns[i].ColumnName,tempdt1.Columns[i].DataType));
    }
    }
    //从tempdt2中取出所有内容对应tempdt1中的名字放到一个新的DataTable中
    foreach(DataRow dr in tempdt2.Rows)
    {
    DataRow DR = DT.NewRow();
    for(int i=0;i<DT.Columns.Count;i++)
    {
    DR[i] = dr[DT.Columns[i].ColumnName];
    }
    DT.Rows.Add(DR);
    }
    //输出新的的Table 的Header
    for(int i=0;i<DT.Columns.Count;i++)
    {
    Response.Write(DT.Columns[i].ColumnName + ((i==(DT.Columns.Count-1))?"<br>":"  @"));
    }
    //输出新的的Table 的Content
    foreach(DataRow dr in DT.Rows)
    {
    for(int i=0;i<dr.ItemArray.Length;i++)
    {
    Response.Write(dr[i] + ((i==(dr.ItemArray.Length-1))?"":"  @"));

    }
    Response.Write("<br>");
    }

    }

    #endregion private DataTable Init_Table1()
    {
    DataTable dt = new DataTable();
    dt.Columns.Add("ID",typeof(int));
    dt.Columns.Add("Title",typeof(string));
    dt.Columns.Add("Name",typeof(string));
    for(int i=0;i<5;i++)
    {
    DataRow dr = dt.NewRow();
    dr[0] = i+1;
    dr[1] = "第 "+(i+1)+ " 行";
    dr[2] = "欢迎光临Lion互动网络 "+(i+1);
    dt.Rows.Add(dr);
    }
    return dt;
    } private DataTable Init_Table2()
    {
    DataTable dt = new DataTable();
    dt.Columns.Add("ID",typeof(int));
    dt.Columns.Add("Name",typeof(string));
    dt.Columns.Add("AddTime",typeof(DateTime));
    for(int i=0;i<5;i++)
    {
    DataRow dr = dt.NewRow();
    dr[0] = i+10;
    dr[1] = "欢迎光临Lion互动网络 "+(i+10);
    dr[2] = DateTime.Now.AddDays(i+10);
    dt.Rows.Add(dr);
    }
    return dt;
    }
    }
    }
    ----------------------------------------------------------------------
    欢迎试用ASP.NET大文件上传组件(UpLoadModule 1.2.2004.0805 & 无刷新进度条)
    http://www.cnblogs.com/lion.net/archive/2004/08/06/30679.aspx
    UpLoadModule为您提供了这样的一个方案,该方案除了允许你上传大文件外,还能实时显示上传进度并捕获上传中的错误信息。允许无商业目的个人用户免费使用。
    ----------------------------------------------------------------------
    欢迎试用HtmlEditor(Version 3.1.2004.0808在线文本编辑器)
    http://www.cnblogs.com/lion.net/archive/2004/08/10/31784.aspx
    她是一个网页的在线文本编辑器,她能够在网页上实现许多桌面编辑软件(如:Word)所具有的强大可视编辑功能;她是一个真正的绿色软件,不需要在计算机上安装任何的客户端软件;并且她是完全开放源代码的,允许无商业目的个人用户免费使用。
    ----------------------------------------------------------------------