我有一个 trends
集合,其中包含大约 30kk 个元素。当我尝试在 linqpad 中执行以下代码时
trends.Take(count).Dump();
它工作正常。
但是如果我添加排序:
trends.OrderByDescending(x => x.Item2).Take(count).Dump();
我得到 System.OutOfMemoryException
我做错了什么?
最佳答案
OrderByDescending
(或 OrderBy
)在您尝试获取第一个元素时具体化整个序列 - 它必须这样做,否则您不可能知道第一个元素.它必须制作序列的副本(当然,通常只是一堆引用)才能排序,因此如果原始序列是内存中的集合,您最终会得到两个副本它的。大概你没有足够的内存。
关于c# - 大集合和 OrderBy 的 OutOfMemoryException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11172242/