相同项求和 如下数据:A 2B 4C 6D 1A 5B 7C 8... 知道总行数,怎么样相同项的求和留一项,不相同的继续保留?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SQL里吗??select a,sum(b) b from table group by a 循环判断一下。sql 简单加个关键字dis.. 不是SQL,是程序里。你可以假设是数组或者集合、 你这些数据是放在哪里的??List??ArrayList??还是DataTable?? 在一个datatable里,不知道怎么如何计算 先排序,再循环判断,如下一item等于当前Item删除 在dataable里,那列是中文的,那要怎么排呢? 先把data table view还原成数据库的表然后用select a,sum(b) b from table group by a,直接就可以计算了,再把结果表用data table view显示出来。 其实在数据库里处理后再取出来就最好了,非常方便,,方法如我一楼所说。。程序里可以这样,你看看: DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Name", typeof(string))); dt.Columns.Add(new DataColumn("Count", typeof(int))); DataRow dr = dt.NewRow(); dr["Name"] = "北京"; dr["Count"] = 3; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "上海"; dr["Count"] = 18; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "广州"; dr["Count"] = 31; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "北京"; dr["Count"] = 13; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "广州"; dr["Count"] = 28; dt.Rows.Add(dr); DataSet ds = new DataSet(); ds.Tables.Add(dt); DataView dv = new DataView(ds.Tables[0]); dv.Sort = "Name asc"; //按姓名排序 dt = dv.ToTable(); //转化为排序后的DataTable string a = dt.Rows[0]["Name"].ToString(); //第一行的名称 int j = 0; //记录行号 int total = 0; //记录总数 for (int i = 0; i <dt.Rows.Count;i++) { if (dt.Rows[i]["Name"].ToString() == a) //相同则累加 { total += Convert.ToInt32(dt.Rows[i]["Count"].ToString()); dt.Rows[j]["Count"] = total.ToString(); if (i != j) { dt.Rows.Remove(dt.Rows[i]); //删除多余项目 i--; //删除后退一行 } } else { a = dt.Rows[i]["Name"].ToString(); //重新定义名称 j = i; //重新定义行号 total = Convert.ToInt32(dt.Rows[i]["Count"].ToString()); //重新设定total值 } } } lamada表达式+Dictionary超简单 如何监控每个方法的执行时间? .Net C# Windows Form, RectangleShape 异常问题. vs2005下关于自动添加括号的的问题 如何使用反射动态的封装数据到一个对象中 页面错位问题. UDP包的大小。。。。。。 C#的应用程序,如何实现框架与引用JS文件和样式文件! 武汉移动应用开发群诚邀大家来交流 xml问题 C#中如何獲取字符長度(如"我是中國人ABC"的長度是13而不是8) C#调用C++的工具 C# Clock问题
select a,sum(b) b from table group by a
sql 简单加个关键字dis..
你可以假设是数组或者集合、
List??ArrayList??还是DataTable??
不知道怎么如何计算
那要怎么排呢?
然后用select a,sum(b) b from table group by a,直接就可以计算了,
再把结果表用data table view显示出来。
程序里可以这样,你看看: DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Name", typeof(string)));
dt.Columns.Add(new DataColumn("Count", typeof(int)));
DataRow dr = dt.NewRow();
dr["Name"] = "北京";
dr["Count"] = 3;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Name"] = "上海";
dr["Count"] = 18;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Name"] = "广州";
dr["Count"] = 31;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Name"] = "北京";
dr["Count"] = 13;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Name"] = "广州";
dr["Count"] = 28;
dt.Rows.Add(dr); DataSet ds = new DataSet();
ds.Tables.Add(dt);
DataView dv = new DataView(ds.Tables[0]);
dv.Sort = "Name asc"; //按姓名排序
dt = dv.ToTable(); //转化为排序后的DataTable
string a = dt.Rows[0]["Name"].ToString(); //第一行的名称
int j = 0; //记录行号
int total = 0; //记录总数
for (int i = 0; i <dt.Rows.Count;i++)
{
if (dt.Rows[i]["Name"].ToString() == a) //相同则累加
{
total += Convert.ToInt32(dt.Rows[i]["Count"].ToString());
dt.Rows[j]["Count"] = total.ToString();
if (i != j)
{
dt.Rows.Remove(dt.Rows[i]); //删除多余项目
i--; //删除后退一行
}
}
else
{
a = dt.Rows[i]["Name"].ToString(); //重新定义名称
j = i; //重新定义行号
total = Convert.ToInt32(dt.Rows[i]["Count"].ToString()); //重新设定total值
}
}
}
超简单