using System.Collections.Generic;
public static void Main(string[] args)
List<string> symbolList = new List<string>() { "1", "1", "3", "2", "2", "2" };
List<string> valueList = new List<string>() { "a1", "b1", "c3", "a2", "b2", "c2" };
var items = symbolList.Zip(valueList, (symbol, value) => new {symbol, value})
.GroupBy(pair => pair.symbol, pair => pair.value)
.OrderBy(group => group.Key)
.Select(group => String.Join("|", (new[] {group.Key}).Concat(group)));
var result = String.Join(",", items);
Console.WriteLine("result: " + result);