Skip to content

Instantly share code, notes, and snippets.

@haacked
Last active December 18, 2015 13:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save haacked/5793124 to your computer and use it in GitHub Desktop.
Save haacked/5793124 to your computer and use it in GitHub Desktop.
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