如何根据Uniqe ID' s#汇总datagridview值

时间:2017-04-18 12:51:56

标签: c# dictionary datagridview

enter image description here

我正在尝试使用c#Dictionary获取DataGridView的摘要。但它只支持一个键和值。

ID   |  Weight
301  |   75Kg
302  |   80Kg
302  |   80Kg
301  |   43Kg
304  |   600Kg

结果在DataGrid视图中应该是这样的:

ID  |  Qty |  Weight
301     2     118Kg
302     2     160Kg
304     1     600Kg

我只能像上面那样获得ID和数量。



 Dictionary<string, KeyValuePair<int, decimal>> dic = new Dictionary<string, KeyValuePair<int, decimal>>();

                string cellValue = null;
                decimal weight = 0;
                for (int i = 0; i <= selecteddgv.Rows.Count - 1; i++)
                {
                    if (!selecteddgv.Rows[i].IsNewRow)
                    {
                        cellValue = selecteddgv[1, i].Value.ToString();
                        weight = Convert.ToDecimal(selecteddgv[5, i].Value);
                        if (!dic.ContainsKey(cellValue))
                        {
                            dic.Add(cellValue, new KeyValuePair<int,decimal>(1, weight));
                        }
                        else
                        {
                            dic[cellValue] +=  new KeyValuePair<int,decimal>(1, weight));

                        }
&#13;
&#13;
&#13;

我试过这个但是当在else块中进行更新时,它会在&#39; + =&#39;

中触发错误

请帮助我在使用KeyValuePair后将其显示到datagridview中。

2 个答案:

答案 0 :(得分:0)

如果您只在SQL中询问,那么这很简单:

select id,count(*), sum(Weight)
from [table]
group by id;

答案 1 :(得分:0)

与字典无关,它们只占用一个键和一个值。作为“不理想”的解决方案,您可以创建嵌套字典。此词典中的键将保存ID,值为

KeyValuePair<int, string>

“int”是“Qty”,“string”是“Weight”

你的整体字典对象将是一个由

构成的对象
Dictionary<int, KeyValuePair<int, string>> myDict = new Dictionary<int, KeyValuePair<int, string>>();