例如:
原表:
id    name    values
1     张三      A
2     李四      B
3     张三      C
显示为:
id    name    values
1     张三      A|C
2     李四      B
这个方法该如何写啊。我用的是access数据库。
要求:不适用SQL函数及access函数只用数据合并..我没多少分,抱歉啊

解决方案 »

  1.   


    用.net方法 不能用sql方法啊
      

  2.   

    就是八楼的思路,我刚写了代码你看看吧,如果错了我再改改//DataTable数据添加
                Hashtable ht = new Hashtable();
                DataTable dt = new DataTable();
                DataColumn dc = new DataColumn("id");
                dt.Columns.Add(dc);
                dc = new DataColumn("name");
                dt.Columns.Add(dc);
                dc = new DataColumn("values");
                dt.Columns.Add(dc);
                DataRow dr = dt.NewRow();
                dr["id"] = 1;
                dr["name"] = "张三";
                dr["values"] = "A";
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["id"] = 2;
                dr["name"] = "李四";
                dr["values"] = "B";
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["id"] = 3;
                dr["name"] = "张三";
                dr["values"] = "C";
                dt.Rows.Add(dr);
                dataGridView1.DataSource = dt;            //合并
                for (int i = 0; i < dt.Rows.Count; i++ )
                {
                    if (ht.ContainsKey(dt.Rows[i]["name"]))
                    {
                        //获取行索引
                        int index = (int)ht[dt.Rows[i]["name"]];
                        //获取最近一次的值(对应values)
                        string str = (string)dt.Rows[index]["values"];
                        //拼接
                        dt.Rows[index]["values"] = str + "|" + dt.Rows[i]["values"];
                        //删除重复行
                        dt.Rows.RemoveAt(i);
                        //调整索引减1
                        i--;
                    }
                    else
                    {
                        //保存名称以及行索引
                        ht.Add(dt.Rows[i]["name"], i);
                    }
      

  3.   

    3 张三 A|C
    2 李四 B
    可以这样显示吗
      

  4.   

    我也写下我的思路:
    string str;DateTable dt=?(这里是你获取的数据源)
    List<string> s=new list<string>();
    for (int i = 0; i < HQ_dt.Rows.Count; i++)  
    {  
     s.Add(dt.Rows[i]["values"].ToString());  
    if(s.Contains(dt.Rows[i]["values"].ToString()))
    {
     str=dt.Rows[i][i].ToString()+dt.Rows[i]["values"].ToString();} 

      

  5.   

    感谢你们啊我自己做出来了 太感谢啦 呵呵分给ghypnus和y112102了
      

  6.   

    public DataSet MergingData()
            {
                int group_id; string strDS = null; DataTable dt = new DataTable();
                DataSet dsGroupManager = groupManagerBLL.GetAllList();
                foreach (DataRow drGroupManager in dsGroupManager.Tables[0].Rows)
                {
                    group_id = int.Parse(drGroupManager["group_id"].ToString());
                    DataSet dsActionGroup = actionGroupBLL.GetList("group_id=" + group_id);
                    foreach (DataRow drActionGroup in dsActionGroup.Tables[0].Rows)
                    {
                        strDS += ("|" + drActionGroup["action"].ToString());
                    }
                    if (!dsGroupManager.Tables[0].Columns.Contains("action"))
                        dsGroupManager.Tables[0].Columns.Add("action");
                    drGroupManager["action"] = strDS;
                    strDS = null;
                }
                return dsGroupManager;
            }