如何根据C#中DataGridView中的另一个列计算行数

时间:2013-05-29 06:11:54

标签: c# datagridview textbox count sum

我在这三个列中有7列是ReadOnly字段,并且根据耗材名称我想要汇总已发出数量的字段。

我想根据耗材名称汇总发出的数量,并将总金额与所需数量进行比较它们是如此多的耗材名称。我的问题如何根据消耗品名称计算已发布数量列。 我试过,最后我得到了答案,这是逻辑上我没有解释它。

1 个答案:

答案 0 :(得分:0)

1)创建一个包含“耗材名称”列的所有行的字符串列表。填写姓名。

2)创建一个等于上面列表中项目数的整数列表。填写数量。

3)从(1)。

创建不同字符串的列表

4)创建一个等于(3)中项目数的整数列表。

5)进入每个不同的元素并获得相关的匹配'耗材名称'并添加数量。

6)如果您想比较或检查其他列,可以遵循类似的步骤。

您可以参考以下代码:

    public void getQuantity()
    {
        List<string> consumbleNames = new List<string>();
        List<int> quantity = new List<int>();

        //Cells[5] refer to 6th column : Quantity issued: you can use column name too
        for (int i = 0; i < yourDataGridView.Rows.Count; i++)
        {
            consumbleNames.Add(yourDataGridView.Rows[i].Cells[0].Value.ToString());
            quantity.Add((int)Convert.ToInt32(yourDataGridView.Rows[i].Cells[5].Value.ToString()));
        }

        List<string> distinctNames = new List<string>(consumbleNames.Distinct());
        List<int> quantityRelated = new List<int>(distinctNames.Count);

        for (int i = 0; i < distinctNames.Count; i++)
        {
            quantityRelated.Add(new int());

            for (int j = 0; j < consumbleNames.Count; j++)
            {
                if (consumbleNames[j].Equals(distinctNames[i]))
                {
                    quantityRelated[i] += quantity[j];
                }
            }
        }

        foreach (int t in quantityRelated)
        {
            /* quantity corresponds to the each distinct item */
        }
    }