比如某一表只有一列,为
jay
li,su
jay,su
li
li,jay
要求最后统计结果为
jay    su    li
3      2     3
怎么写出来呢?谢啦

解决方案 »

  1.   

    这个在SQL中不好处理。
    下面的结果返回Hashtable,也可返回DataTable再绑定
                //DataTable数据
                DataTable dt = new DataTable();
                dt.Columns.Add("test", typeof(string));
                dt.Rows.Add("jay");
                dt.Rows.Add("li,su");
                dt.Rows.Add("jay,su");
                dt.Rows.Add("li");
                dt.Rows.Add("li,jay");
                Hashtable ht = new Hashtable();//键/值对
                foreach (DataRow dr in dt.Rows)
                {
                    string[] sarr = dr[0].ToString().Split(',');
                    for (int i = 0; i < sarr.Length; i++)
                    {
                        if (!ht.Contains(sarr[i]))
                            ht.Add(sarr[i], 1);
                        else
                            ht[sarr[i]] = (int)ht[sarr[i]] + 1;
                    }
                }
                richTextBox1.Clear();
                foreach (DictionaryEntry de in ht)
                {
                    richTextBox1.AppendText(de.Key + ":" + de.Value + "\r\n");//输出
                }
                /*
                li:3
                jay:3
                su:2
                 */
      

  2.   

    恩,谢谢解答。
    如果我想用几个表得到一个新的视图,
    strSQL=“sql语句”;
    DataTable dt = dbOpr.GetDataTable(strSQL);
    这么写可以么?
      

  3.   

    SQL语句是多表关联查询可以。
      

  4.   

    这个,我想输出一个datatable怎么弄呢?输出上有点看不懂
    谢谢呀
      

  5.   

    嘛意思
    split()
    不行吗
      

  6.   

    如果我想把结果用datatable存呢?不用hashtable
      

  7.   

    同10楼,datatable存,怎么写呢?不熟悉呀
      

  8.   

            private void button2_Click(object sender, EventArgs e)
            {
                //DataTable数据
                DataTable dt = new DataTable();
                dt.Columns.Add("test", typeof(string));
                dt.Rows.Add("jay");
                dt.Rows.Add("li,su");
                dt.Rows.Add("jay,su");
                dt.Rows.Add("li");
                dt.Rows.Add("li,jay");
                DataTable rdt = new DataTable();//目标表
                //添加列
                foreach (DataRow dr in dt.Rows)
                {
                    string[] sarr = dr[0].ToString().Split(',');
                    for (int i = 0; i < sarr.Length; i++)
                    {
                        if (!rdt.Columns.Contains(sarr[i]))
                            rdt.Columns.Add(sarr[i], typeof(string));
                    }
                }
                //添加行,当前只有1行
                DataRow rdr = rdt.NewRow();
                for (int i = 0; i < rdt.Columns.Count; i++)
                    rdr[i] = 0;
                rdt.Rows.Add(rdr);
                //更新数值
                foreach (DataRow dr in dt.Rows)
                {
                    string[] sarr = dr[0].ToString().Split(',');
                    for (int i = 0; i < sarr.Length; i++)
                            rdt.Rows[0][sarr[i]] = Convert.ToInt32(rdt.Rows[0][sarr[i]]) + 1;
                }
                dataGridView1.DataSource = rdt;//绑定
            }
        }
      

  9.   

    这个可以这么写么?为什么sarr[i]那里总报错呢?