C# WinForm listview 如何将相同的行合并,数据是解析出来的
道具编号 道具名称 道具数量 角色名称
289      新手衣服 1        sdfsdf
883      月之心   1        sdfsdf
883      月之心   1        sdfsdf
不是从数据库里查询出来的,是解析出来的
我的目的是 合并listview  相同的行
道具编号 道具名称 道具数量 角色名称
289      新手衣服 1        sdfsdf
883      月之心   2        sdfsdf在线等高手,不甚感激

解决方案 »

  1.   

    把数据给listview之前筛选吧最好用linq吧
      

  2.   


    string[] columns = new string[DataTable.Columns.Count];  
      
    for (int index= 0; index < DataTableName.Columns.Count; index++)  
    {  
        columns[index] = DataTable.Columns[index].ColumnName;  
    }  
      
    DataTable dt = DataTable.DefaultView.ToTable(true, columns); 
    DataTable你解析得到的数据表,然后经过DataView.ToTable得到的dt为去掉重复的数据表
    最后将dt绑定到listview
      

  3.   


    楼上的高手,如果我得到的是
    SItemGrid[] items = bag.Items; //这里面就存在两个相同的道具,我需要将他们的数量合并,请问怎么做
      

  4.   

    var value=(from v in listview select v.道具编号).Distinct().ToList();上面是linq筛选,这样得到的list就是去到重复的啦,试试吧
      

  5.   

    可以用泛型分组,然后重新构建DataTable
                IEnumerable<IGrouping<string, DataRow>> result = dt.Rows.Cast<DataRow>().GroupBy<DataRow, string>(d => d[8].ToString());
                foreach (IGrouping<string, DataRow> ig in result)
    重复的行手动合并
      

  6.   


    string[] columns = new string[DataTableSource.Columns.Count];            for (int index = 0; index < DataTableSource.Columns.Count; index++)
                {
                    columns[index] = DataTableSource.Columns[index].ColumnName;
                }
                //得到不重复的数据行
                DataTable dt = DataTableSource.DefaultView.ToTable(true, columns);             foreach (DataRow dr in dt.Rows)
                {
                    DataRow[] drs = DataTableSource.Select(string.Format("编号='{0}'", dr["编号"].ToString()));
                    if (drs.Length > 0)
                    {
                        int num = 0;
                        foreach (DataRow row in drs)
                        {
                            num += int.Parse(row["数量"].ToString());
                        }
                        dr["数量"] = num.ToString();
                    }            
                }            dataGridView1.DataSource = dt;
      

  7.   

    这个兄弟太感谢你了,刚开始,我行不通,后来,我在解析之前,用Hashtable 来判断,如果存在相同的道具编号,则所对应的对象的道具数量累加。就解决了,不过还是非常感谢你呀。我这就去结贴。