LINQ To Objects GroupBy方法

Sib*_*Guy 10 .net c# linq

LINQ To Objects GroupBy方法如何工作?每个键的整个集合是否都有效?有没有办法对GroupBy方法说集合是否已排序?

Mar*_*ell 2

如果做得明智,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));
}
Run Code Online (Sandbox Code Playgroud)

基本上按键分组,为每个唯一键创建一个包含值的列表。

可以执行诸如与上次看到的键进行比较之类的操作(以帮助排序数据),但是...您需要进行分析才能知道它是否值得。