public static string test()
    {
        var list = new ArrayList <GroupByAux> {
            new GroupByAux {
                Key = "a", Value = "b"
            },
            new GroupByAux {
                Key = "a", Value = "c"
            },
            new GroupByAux {
                Key = "d", Value = "e"
            },
            new GroupByAux {
                Key = "d", Value = "f"
            },
            new GroupByAux {
                Key = "d", Value = "g"
            }
        };

        var result = "";

        foreach (var g in list.groupBy(p => p.Key))
        {
            result += "(" + g.Key + ")";
            foreach (var e in g)
            {
                result += e.Value;
            }
        }
        return(result);
    }
	public static string test() {
		var list = new ArrayList<GroupBy2Aux> {
			new GroupBy2Aux { Key = "a", Value = "b" },
			new GroupBy2Aux { Key = "a", Value = "c" },
			new GroupBy2Aux { Key = "d", Value = "e" },
			new GroupBy2Aux { Key = "d", Value = "f" },
			new GroupBy2Aux { Key = "d", Value = "g" }
		};
		
		var result = "";
		foreach (var g in list.groupBy(p => p.Key, p => p.Value.toUpperCase())) {
			result += "(" + g.Key + ")";
			foreach (var e in g) {
				result += e;
			}
		}
		return result;
	}