获取datagridview的总和使用Linq获取不同ID的列

Pra*_*hap 5 c# datagridview winforms

我有两种形式,Form1(DGV1 & DGV2)并且两种形式Form2(DGV3 & DGV4)都有Datagridview控件.

Form1那里有一个Form2用户可以添加行的按钮链接Form1 datagridview(DGV1).在Form2 ? (DGV3 and DGV4),checkbox第一列中有一个,用户一次只能选择一行.

有两个按钮Form2:DoneAdd Items

当用户通过一个接一个地选择行来单击"添加项目"时,必须将行添加到" datagridview打开" Form1,单击"完成"按钮时,Form1应显示添加的所有行.

我做到了这一点.

列中的DGV1DGV2

DGV1色谱柱

Sno Desciption SellQty ItemID
----------------------------
 1    ABC       0         1 
 2    XYZ       0         2
Run Code Online (Sandbox Code Playgroud)

DGV2色谱柱

Sno BatchNo SellQty ItemID
----------------------------
1    123       10         1
2    528       20         2
1    568       30         1
2    522       40         2
Run Code Online (Sandbox Code Playgroud)

在的加载Form1,我怎么能得到的总和SellQty根据ItemIDForm ? DGv2和更新的价值SellQtyDGV1.

例: For ItemID=1 sum(SellQty)=40

所以我需要将此值赋给DGV1 SellQty Column=40.

请指教.

Hab*_*bib 6

以下将为您提供总数量ItemID == 1- (确保为数据网格使用正确的列名称)

int total = DGV1.Rows.Cast<DataGridViewRow>()
                    .Where(r=> Convert.ToInt32(r.Cells["ItemID"].Value) == 1)
                    .Sum(t=> Convert.ToInt32(t.Cells["SellQty"].Value));
Run Code Online (Sandbox Code Playgroud)

编辑:

对于更新gridview,您可以执行以下操作:

for (int i = 0; i < DGV1.Rows.Count; i++)
{
    if (Convert.ToInt32(DGV1.Rows[i].Cells["ItemID"].Value) == 1)
        DGV1.Rows[i].Cells["SellQty"] = total;
}
Run Code Online (Sandbox Code Playgroud)