gpt4 book ai didi

用于大量条目的 C# LazyList

转载 作者:太空宇宙 更新时间:2023-11-03 21:10:47 28 4
gpt4 key购买 nike

我最近开始意识到 LazyList 的概念,我想在我的工作中实现这个概念。

我有几个方法可以从数据库中检索数十万个条目,我想返回一个 LazyList<T>而不是典型的 List<T> .

我只能找到 Lazy<List<T>>就我的理解而言,这是不一样的。 Lazy<List<T>>使列表的初始化变得懒惰,这不是我需要的。

我想举一个 Scheme 语言的例子,如果有人用过的话。

基本上是由LinkedNodes实现的而需要计算给定节点的值并且 node.next实际上是一个需要计算以检索值的函数。

我想知道如何实际控制大小为 400k 左右的列表,持有几 MB 大小的列表听起来很昂贵,根据程序需要的数据库操作,可能会达到 GB做。

我目前使用的是 .Net 4.5,C# 版本是 4

最佳答案

而不是返回 List<T>LazyList ,为什么不 yield 返回结果呢?这比检索所有行要好得多。它将逐行流式传输。更适合内存管理。

例如:(伪)

private IEnumerator<Row> GetRows(SqlConnection connection)
{
var resultSet = connection.ExecuteQuery(.....);
resultSet.Open();
try
{
while(resultSet.FetchNext())
{
// read one row..
yield return row;
}
}
finally
{
resultSet.Close();
}
}

foreach(var row in GetRows(connection))
{
// handle the row.

}

这样每行都会处理每个结果集。

关于用于大量条目的 C# LazyList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37853159/

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