数据库中A表的数据如下。
AnalystID PeriodID Name                       Label   
------    -------- -------------------------  -------
1         1        Morgan Keegan              1 Year
1         2        Morgan Keegan              2 Years
1         3        Morgan Keegan              3 Years
4         1        Oppenheimer & Company      1 Year
4         2        Oppenheimer & Company      2 Years
4         3        Oppenheimer & Company      3 Years
8         1        Hilliard Lyons             1 Year
8         2        Hilliard Lyons             2 Years
8         3        Hilliard Lyons             3 Years
9         1        RBC Capital Markets        1 Year
9         2        RBC Capital Markets        2 Years
9         3        RBC Capital Markets        3 Years在DataTable对象中的数据如下:
AnalystID   PeriodID    Value       
----------- ----------- ----------- 
1           1           390
1           2           412
1           3           415
4           1           494
4           2           518
4           3           525
8           1           122
8           2           128
8           3           133
9           1           1232
9           2           1311
9           3           1363如何做到我要的结果显示在DataGrid中,效果如下:
AnalystID PeriodID Name                       Label       Value       
------    -------- -------------------------  -------     ----------- 
1         1        Morgan Keegan              1 Year      390
1         2        Morgan Keegan              2 Years     412
1         3        Morgan Keegan              3 Years     415
4         1        Oppenheimer & Company      1 Year      494
4         2        Oppenheimer & Company      2 Years     518
4         3        Oppenheimer & Company      3 Years     525
8         1        Hilliard Lyons             1 Year      122
8         2        Hilliard Lyons             2 Years     128
8         3        Hilliard Lyons             3 Years     133
9         1        RBC Capital Markets        1 Year      1232
9         2        RBC Capital Markets        2 Years     1311
9         3        RBC Capital Markets        3 Years     1363

解决方案 »

  1.   

    简单的方法,把表B循环插入到数据库临时表里,然后通过sql语句来关联查询,
    其次你可以对A表记录进行循环,根据字段,过滤表B的结果集例如datatable.Select("AnalystID=1 and PeriodID=1")来进行DataTable合并
      

  2.   

    你的表是用了联合主键吧
    select a.*,b.value from aaa as a,bbb as b
    where a.AnalystID=b.AnalystID and a.PeriodID=b.PeriodID
      

  3.   

    不要告诉我用SQL!!!  高手显身啊.100分....
      

  4.   

    // 从数据库读取 表A 数据
            string sql = null; // such as "SELECT AnalystID PeriodID Name Label FROM MyTable"; // WHERE xxx=yyy
            string connStr = null; // such as "server=.;database=mydb;uid=sa;pwd=";
            // ...
            SqlConnection conn = new SqlConnection(connStr);
            SqlDataAdapter da = new SqlDataAdapter(sql, conn);
            // dt1 表示你数据库中的那个 表A
            DataTable dt1 = new DataTable("表A");
            da.Fill(dt1);
            // ...
            
            // 为 dt1 添加列
            dt1.Columns.Add("Value ", typeof(int));
            
            // dt2 表示你内存中的那个 DataTable
            DataTable dt2 = null;
            // ...        // 遍历 dt2,拷贝列 Value 到 dt1
            for (int i = 0; i < dt2.Rows.Count; i++) {
                DataRow[] drArr1 = dt1.Select(String.Format("AnalystID={0} AND PeriodID={1}", dt2.Rows[i]["AnalystID"], dt2.Rows[i]["PeriodID"]));
                foreach (DataRow dr in drArr1) {
                    dr["Value"] = dt2.Rows[i]["PeriodID"];
                }            
            }
            
            // 绑定数据
            // MyDataGrid.DataSource = dt1;
            // MyDataGrid.DataBind();;
      

  5.   

    把你表中的数据读到一个DataTable 中.给这个DataTable加一列
    如:dt1.Columns.Add("Value ", typeof(int));然后遍历这个DataTable再把另一个DataTable的数据塞进去.
      

  6.   

    你的问题,应该可以理解为DataTable和数据库表无法直接查询
    解决问题有两个方法,楼上也都有人说了:
    一、把DataTable的数据插入临时表中,然后用Sql操作数据库
    二、把数据库表的数据查询出来,存入DataTable,然后用DotNet来操作这两个DataTable
    用Jinglecat(晓风残月)的