using System.Collections.Generic;
public static void Main()
var prefixes = new List<string>() { "INTEL", "AMD", "IN" };
var parameterValues = new List<string>()
"INTEL I7", "INTEL I5", "INBLALBA", "AMD5", "INTEL I3", "AMD3", "BLABLA", "BLABLA2", "intel pentium"
var q = from pv in parameterValues
let foundPrefix = prefixes.FirstOrDefault(p => pv.StartsWith(p, StringComparison.OrdinalIgnoreCase))
select new { pv, foundPrefix };
var result = q.GroupBy(a => a.foundPrefix).ToList();
var final = result.ToDictionary(g => g.Key ?? "others", g => g.Select(a => a.pv).ToList());
Console.WriteLine(final.Aggregate("", (acc, kvp) => string.Format("{0}\n{1,10}: {2}", acc, kvp.Key, string.Join(", ", kvp.Value))));