【发布时间】:2016-11-06 01:56:51
【问题描述】:
分组:
public interface IGrouping<out TKey, out TElement> : IEnumerable<TElement>,
IEnumerable
字典:
public interface IDictionary<TKey, TValue> : ICollection<KeyValuePair<TKey, TValue>>,
IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable
所以,IDictionary 实现了IEnumerable<KeyValuePair<TKey, TValue>>,而IGrouping 实现了IEnumerable<TElement>。如果IGrouping的元素包含键,为什么界面不也使用KeyValuePair?似乎在IDictionary 中实现的对IGrouping 有用的方法(例如IDictionary.ContainsKey)在IGrouping 中不可用,这意味着任何在组上查找键的尝试(在 O(1) 时间内)看起来类似:
List<int> myList = new List<int>{ 1, 2, 3, 1};
var grp = myList.GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count());
if (grp.ContainsKey(someValue)){...}
我只是使用IGrouping 错了吗?我错过了什么?
【问题讨论】:
标签: c#