public static Dictionary <TKey, TValue> FromFudgeMsg <TKey, TValue>(IFudgeFieldContainer ffc, Func <IFudgeField, TKey> keyFactory, Func <IFudgeField, TValue> valueFactory) { ArgumentChecker.NotNull(keyFactory, "keyFactory"); ArgumentChecker.NotNull(valueFactory, "valueFactory"); if (ffc == null) { return(new Dictionary <TKey, TValue>()); } if (ffc.Any(f => f.Ordinal.GetValueOrDefault(0) > 2)) { throw new ArgumentException(); } var entries = ffc.GetAllByOrdinal(1).Zip(ffc.GetAllByOrdinal(2), Tuple.Create); return(entries.ToDictionary(t => keyFactory(t.Item1), t => valueFactory(t.Item2))); }