gpt4 book ai didi

c# - 使用 IEnumerable> 的更好方法

转载 作者:太空狗 更新时间:2023-10-29 22:08:35 25 4
gpt4 key购买 nike

我正在调用一个包含多个结果集(总是 2 个)的存储过程,并将结果写入单独的文件(以竖线分隔格式)。我无法将结果集拆分为单独的存储过程。我正在使用 IDataReader 和 IEnumerable 来尽可能少地保留进程中的内存。

是否有更清洁的方式来消耗我的 IEnumerable<IEnumerable<string>>比使用 GetEnumerator/MoveNext/Current 获取内部 IEnumerable<string>传递给 File.AppendAllLines?

    public void Execute()
{
var reader = GetLines();

using (var enumerator = reader.GetEnumerator())
{
enumerator.MoveNext();

File.AppendAllLines("file1.dat", enumerator.Current);
enumerator.MoveNext();

File.AppendAllLines("file2.dat", enumerator.Current);
}
}

public IEnumerable<IEnumerable<string>> GetLines()
{
Database db = DatabaseFactory.CreateDatabase("connectionStringKey");
using (var command = db.GetStoredProcCommand("getdata_sp"))
{
var reader = db.ExecuteReader(command);
yield return GetInnerEnumerable(reader);
reader.NextResult();
yield return GetInnerEnumerable(reader);
}
}

private IEnumerable<string> GetInnerEnumerable(IDataReader reader)
{
while (reader.Read())
{
object[] rowValues = new object[reader.FieldCount];
reader.GetValues(rowValues);
yield return String.Join("|", rowValues);
}
}

最佳答案

为什么不用 foreach 循环?这是最基本的。

关于c# - 使用 IEnumerable<IEnumerable<string>> 的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5478302/

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