using System.Collections.Generic;
public static Dictionary<string, T> LineDictionary<T>(string input, char[] fieldSeparators, Func<string[], T> valueParser)
return input.Split(new char[]{ '\r','\n' }, StringSplitOptions.RemoveEmptyEntries)
.Select(line => line.Split(fieldSeparators))
.ToDictionary(rec => rec[0].Trim(), valueParser);
public static void Main()
var parsed = LineDictionary(csv, new char[]{ ',', ';' }, rec => Int32.Parse(rec[1]));
Dictionary<string, int> parsed2 = LineDictionary(csv, new char[]{ ',', ';' }, rec => Int32.Parse(rec[1]));
Console.WriteLine(parsed["John"]);
foreach (var x in parsed)
Console.WriteLine(x.Key+" = "+x.Value);