日期:2014-05-18  浏览次数:20496 次

关于多行多列合并为单行单列,数据绑定
例如:
原表:
id name values
1 张三 A
2 李四 B
3 张三 C
显示为:
id name values
1 张三 A|C
2 李四 B


这个方法该如何写啊。。。。我用的是access数据库。
要求:不适用SQL函数及access函数

只用数据合并..我没多少分,抱歉啊

------解决方案--------------------
就是八楼的思路,我刚写了代码你看看吧,如果错了我再改改
C# code

//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);
                }

------解决方案--------------------
我也写下我的思路:
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();