我正在尝试使用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;
我试过这个但是当在else块中进行更新时,它会在&#39; + =&#39;
中触发错误请帮助我在使用KeyValuePair后将其显示到datagridview中。
答案 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>>();