LINQ To Objects GroupBy 方法如何工作?它会为每个键查看整个集合吗?有什么方法可以告诉 GroupBy 方法集合已排序吗?
最佳答案
GroupBy,如果处理得当,将只在一次前向传递中起作用。基本实现(不是他们的)将可比到:
var data = new Dictionary<TKey, List<TValue>>(comparer);
foreach(var item in source) {
var key = keySelector(item);
List<TValue> list;
if(!data.TryGetValue(key, out list))
{
data.Add(key, list = new List<TValue>());
}
list.Add(itemSelector(item));
}
这基本上是按键分组,为每个唯一的键创建一个包含值的列表。
您可以做一些事情,比如与最后一次看到的键进行比较(以帮助排序数据),但是......您需要进行概要分析以了解它是否值得。
关于c# - LINQ To 对象 GroupBy 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6076696/