C# WinForm listview 如何将相同的行合并
C# WinForm listview 如何将相同的行合并,数据是解析出来的
道具编号 道具名称 道具数量 角色名称
289 新手衣服 1 sdfsdf
883 月之心 1 sdfsdf
883 月之心 1 sdfsdf
不是从数据库里查询出来的,是解析出来的
我的目的是 合并listview 相同的行
道具编号 道具名称 道具数量 角色名称
289 新手衣服 1 sdfsdf
883 月之心 2 sdfsdf
在线等高手,不甚感激
------解决方案--------------------var value=(from v in listview select v.道具编号).Distinct().ToList();
上面是linq筛选,这样得到的list就是去到重复的啦,试试吧
------解决方案--------------------可以用泛型分组,然后重新构建DataTable
IEnumerable<IGrouping<string, DataRow>> result = dt.Rows.Cast<DataRow>().GroupBy<DataRow, string>(d => d[8].ToString());
foreach (IGrouping<string, DataRow> ig in result)
重复的行手动合并
------解决方案--------------------C# code
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;