C# 对具有相同ID的列求和
我有两个数据表,我合并了它们。合并后,我想在datagrid中显示它们,但如果有相同的“id”,则列应该是sum和group 榜样; 现在看起来是这样的 我想要的是,如果“realid”列与下面的相同,则求和它们 我目前编写了以下代码,最后将其绑定到datagrid 那之后我该怎么办C# 对具有相同ID的列求和,c#,.net,C#,.net,我有两个数据表,我合并了它们。合并后,我想在datagrid中显示它们,但如果有相同的“id”,则列应该是sum和group 榜样; 现在看起来是这样的 我想要的是,如果“realid”列与下面的相同,则求和它们 我目前编写了以下代码,最后将其绑定到datagrid 那之后我该怎么办 DataTable dtNewTable = new DataTable(); DataTable dtCurtable = new DataTable();
DataTable dtNewTable = new DataTable();
DataTable dtCurtable = new DataTable();
private void Form1_Load(object sender, EventArgs e)
{
// Add columns
DataColumn column2 = new DataColumn("counts", typeof(System.Int32));
DataColumn column3 = new DataColumn("realid", typeof(string));
dtNewTable.Columns.Add(column2);
dtNewTable.Columns.Add(column3);
dtCurtable = dtNewTable.Copy();
}
private void button1_Click(object sender, EventArgs e)
{
DataRow row;
Random r = new Random();
dtNewTable.Clear();
for (int i = 0; i <= 1; i++)
{
row = dtNewTable.NewRow();
row["counts"] = r.Next(10,40) ;
row["realid"] = i + " id";
dtNewTable.Rows.Add(row);
}
dtCurtable.Merge(dtNewTable);
dataGrid1.DataSource = dtCurtable;
}
DataTable dtNewTable=newdatatable();
DataTable dtCurtable=新的DataTable();
私有void Form1\u加载(对象发送方、事件参数e)
{
//添加列
DataColumn column2=新的DataColumn(“计数”,typeof(System.Int32));
DataColumn column3=新的DataColumn(“realid”,typeof(string));
dtNewTable.Columns.Add(column2);
dtNewTable.Columns.Add(column3);
dtCurtable=dtNewTable.Copy();
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
数据行;
随机r=新随机();
dtNewTable.Clear();
对于(inti=0;i您可以在这里使用Linq,如下所示
var dt1 = dtCurtable.AsEnumerable()
.GroupBy(r => r.Field<string>("realid"))
.Select(g =>
{
DataRow row = dtCurtable.NewRow();
row["realid"] = g.Key;
row["Count"] = g.Sum(r => r.Field<int>("counts"));
return row;
}).CopyToDataTable();
var dt1=dtCurtable.AsEnumerable()
.GroupBy(r=>r.Field(“realid”))
.选择(g=>
{
DataRow row=dtCurtable.NewRow();
行[“realid”]=g.键;
行[“计数”]=g.Sum(r=>r.Field(“计数”);
返回行;
}).CopyToDataTable();
您可以像这样在这里使用Linq
var dt1 = dtCurtable.AsEnumerable()
.GroupBy(r => r.Field<string>("realid"))
.Select(g =>
{
DataRow row = dtCurtable.NewRow();
row["realid"] = g.Key;
row["Count"] = g.Sum(r => r.Field<int>("counts"));
return row;
}).CopyToDataTable();
var dt1=dtCurtable.AsEnumerable()
.GroupBy(r=>r.Field(“realid”))
.选择(g=>
{
DataRow row=dtCurtable.NewRow();
行[“realid”]=g.键;
行[“计数”]=g.Sum(r=>r.Field(“计数”);
返回行;
}).CopyToDataTable();
DataRow row=dt.NewRow()中的'dt'是什么;我从数据库获取datetime;但是这会抛出一个错误;row2[“SAMPLE\u TIME”]=g.Select(h=>h.Field(“SAMPLE\u TIME”))@johntrue不,你不能这样做,因为该列不属于groupby
。将此问题与所有相关信息分开发布在一个问题中DataRow=dt.NewRow()中的“dt”是什么?我从数据库获取datetime;但是这会抛出一个错误;row2[“SAMPLE\u TIME”]=g.Select(h=>h.Field(“SAMPLE\u TIME”))@johntrue不,你不能这样做,因为该列不属于分组依据的一部分。请将此问题与所有相关信息分别发布在一个问题中