public static IDictionary <T1, T2> SubDictionary <T1, T2>(this IDictionary <T1, T2> originalDictionary, T1 startKeyInclusive, T1 endKeyInclusive) { var head = originalDictionary.Head(startKeyInclusive, false); var tail = originalDictionary.Tail(endKeyInclusive, false); var tmp = originalDictionary.Clone(); tmp.Remove(head.Keys.ToArray <T1>()); tmp.Remove(tail.Keys.ToArray <T1>()); return(tmp); }