using System;

using System.Collections.Generic;

using System.Linq;


class Program

{

    static void Main(string[] args)

    {

        List<List<char>> _list = new List<List<char>>() {

            new List<char>{ 'a','b','c','d','e'},

            new List<char>{ 'a','b','b','d','e'},

            new List<char>{ 'a','b','c','d','e'},

            new List<char>{ 'a','b','c','d','e'},

            new List<char>{ 'a','b','c','d','e'}

        };

        var group = _list.GroupBy(r => new string(r.Take(2).ToArray()), r => r.Skip(2).Take(3).ToArray());

        List<string> _output = new List<string>();

                foreach (var g in group)

        {

            //char

            var result = g.ToList().SelectMany(r => r).Distinct().OrderBy(r=>r);

            _output.Add(g.Key + new string(result.ToArray()));

        }

        List<List<int>> _list_int = new List<List<int>>() {

            new List<int>{ 1,2,3,4,5},

            new List<int>{ 1,2,6,4,5},

            new List<int>{ 1,2,3,4,5},

            new List<int>{ 1,2,3,4,5},

            new List<int>{ 1,2,3,4,5}

        };

        var group_int = _list_int.GroupBy(r => r[0].ToString() + r[1].ToString(), r => r.Skip(2).Take(3).ToArray());

        Dictionary<string, int> output = new Dictionary<string, int>();

        foreach (var g in group_int)

        {

            //전체

            int all_sum = g.ToList().SelectMany(r => r).Sum();

            //중복 제거후 합산

            int sum = g.ToList().SelectMany(r => r).Distinct().Sum();

            output.Add(g.Key, sum);

        }

        Console.ReadKey();

    }

}