我想在每个日期获取每个ID的总金额。
示例数据:
:setvar path "Variable"
PRINT '$(path)'
这都是在datagridview中并且有很多行。对于“2017-01-03”中的“619”,我有3种不同的金额,例如418.80,497.48和29.13。我想总计这个金额并将其放在最后一个条目下面,如下所示。
ID Date Amount
619|RENE ABERIA 2017-01-03 418.80
619|RENE ABERIA 2017-01-03 497.48
619|RENE ABERIA 2017-01-03 29.13
620|JAMES APRECIO 2017-01-03 460.70
620|JAMES APRECIO 2017-01-03 76.33
620|JAMES APRECIO 2017-01-04 460.70
620|JAMES APRECIO 2017-01-04 59.32
620|JAMES APRECIO 2017-01-06 460.70
我想我必须使用FOR LOOP去每一行,但我不知道如何去做或继续。以下是我到目前为止的情况,显然,完成它还有很长的路要走。
ID Date Amount
619|RENE ABERIA 2017-01-03 418.80
619|RENE ABERIA 2017-01-03 497.48
619|RENE ABERIA 2017-01-03 29.13
Total: 945.41
620|JAMES APRECIO 2017-01-03 460.70
620|JAMES APRECIO 2017-01-03 76.33
Total: 537.03
620|JAMES APRECIO 2017-01-04 460.70
620|JAMES APRECIO 2017-01-04 59.32
Total: 520.02
620|JAMES APRECIO 2017-01-06 460.70
Total: 460.70
这与“how I can show the sum of in a datagridview column?”中的问题不同,因为该示例仅对该列中的所有内容进行求和。我需要的是将具有相同ID和相同日期的列的值相加。
非常感谢您的帮助。
答案 0 :(得分:2)
将信息收集到字典中后,循环遍历数据。
现在字典将包含每个ID和日期的数字列表,可以轻松计算。
private void GetTotalShareForDay()
{
var results = new Dictionary<Tuple<string, string>,List<decimal>>();
for (var i = 0; i < dgvSummary.Rows.Count; i++)
{
string laborerId = dgvSummary.Rows[i].Cells[0].Value.ToString();
string date = dgvSummary.Rows[i].Cells[1].Value.ToString();
Tuple<string, string> uniqueKey = new Tuple<string, string>(laborerID, date); // laborerID and date combined provide uniqueness
decimal share = Convert.ToDecimal(dgvSummary.Rows[i].Cells[5].Value);
if (!results.ContainsKey(uniqueKey))
results.Add(uniqueKey, new List<double>());
results[uniqueKey].Add(share);
}
foreach(var key in results.Keys)
{
// key.Item1 is laborerID
// key.Item2 is Date as string
decimal sum = results[key].Sum();
Console.Write("Laborer ID:" + key.Item1);
Console.Write("Date:" + key.Item2);
Console.Write("Sum:" + sum);
}
}
带有元组的版本(首选)
$('.arrow-up').on('click', function() {
// select `i` tag with class `fa` withtin the div and toggle both classes
$('i.fa', this).toggleClass('fa-chevron-up fa-chevron-down');
});