Quick actions

cmd+k|ctrl+k

Navigation

Languages

Dictionary - Return highest total transaction amounts.

Snippet info

Language

Csharp

Visibility

public

Author

takutapfu

Created

2025-10-08T06:45:09.40327Z

Updated

2025-10-08T06:45:31.976377Z

using System;
using System.Collections.Generic;
using System.Linq;

//Given a list of transaction records, where each record contains a user and an amount,
//write a function that returns the top 2 users with the highest total transaction amounts.
class MainClass {
    static void Main() {
        var transactions = new List<(string User, decimal Amount)>
        {
            ("Alice", 150),
            ("Bob", 200),
            ("Alice", 300),
            ("David", 50),
            ("Bob", 100),
            ("Charlie", 400)
        };

        Dictionary<string, decimal> totalTrans = ProcessTotalTransactions(transactions);
          // Sort the dictionary by value in ascending order
        var sortedTransByValue = totalTrans.OrderByDescending(pair => pair.Value)
                                  .ToDictionary(pair => pair.Key, pair => pair.Value);
        int count = 0;
        foreach(var trans in sortedTransByValue){
            if(count == 2){
                break;
            }
            Console.WriteLine("[{0} : {1}]", trans.Key, trans.Value);
            count ++;
        }
    }
    
    public static Dictionary<string, decimal> ProcessTotalTransactions(List<(string User, decimal Amount)> inputList){
        Dictionary<string, decimal> transactions = new Dictionary<string, decimal>();
        foreach(var input in inputList){
            if(transactions.ContainsKey(input.User)){
                transactions[input.User] += input.Amount;
            }
            else{
                transactions[input.User] = input.Amount;
            }
        }
        
        return transactions;
    }
}
INFO