Create a gist now

Instantly share code, notes, and snippets.

An implementation of ToDictionary that provides information about which key had duplicate entries.
public static class EnumerableExtensions
{
public static Dictionary<TKey, TSource> ToDictionaryBetter<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
return source.GroupBy(keySelector).ToDictionary(group => group.Key, group =>
{
try
{
return group.Single();
}
catch (InvalidOperationException)
{
throw new InvalidOperationException(
string.Format("Duplicate item with the key '{0}'", keySelector(@group.First())));
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment