gpt4 book ai didi

c# - 为什么 ToLookup 和 GroupBy 不同?

转载 作者:IT王子 更新时间:2023-10-29 03:36:16 28 4
gpt4 key购买 nike

.ToLookup<TSource, TKey> 返回 ILookup<TKey, TSource> . ILookup<TKey, TSource>还实现了接口(interface) IEnumerable<IGrouping<TKey, TSource>> .

.GroupBy<TSource, TKey> 返回 IEnumerable<IGrouping<Tkey, TSource>> .

ILookup 具有方便的索引器属性,因此它可以以类似字典(或类似查找)的方式使用,而 GroupBy 则不能。没有索引器的 GroupBy 使用起来很痛苦;几乎可以引用返回对象的唯一方法是循环遍历它(或使用另一种 LINQ 扩展方法)。换句话说,在 GroupBy 起作用的任何情况下,ToLookup 也将起作用。

所有这些都让我产生疑问,为什么我要为 GroupBy 而烦恼?为什么要存在?

最佳答案

why would I ever bother with GroupBy? Why should it exist?

当您对代表包含十亿行的远程数据库表的对象调用 ToLookup 时会发生什么?

十亿行通过网络发送,您在本地构建查找表。

当您在此类对象上调用 GroupBy 时会发生什么?

构建了一个查询对象;故事结束。

当该查询对象被枚举时,表的分析将在数据库服务器上完成,并且分组的结果按需一次发送几个。

从逻辑上讲,它们是相同的东西,但每个的性能影响是完全不同的。调用 ToLookup 意味着我现在想要按组组织的整个事物的缓存。调用 GroupBy 意味着“我正在构建一个对象来表示‘如果我按组组织这些东西会是什么样子?’这个问题”

关于c# - 为什么 ToLookup 和 GroupBy 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10215428/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com