0
我已經使用yield語句將一個SQLDataReader包裝爲一個IEnumberable。我想用它來轉儲到一個文件。我看到一些相當大的內存使用率。想知道是否有人對如何以最小或設置的內存利用率做到這一點有任何想法。我不介意指定一個緩衝區,我只想知道它會在沒有懷疑的服務器上釋放它之前會是什麼。將數據從SQLDataReader保存到FileStream,使用最少的內存使用
我一直在使用類似以下內容:
class Program
{
static void Main(string[] args)
{
var fs = File.Create("c:\\somefile.txt");
var sw = new StreamWriter(fs);
foreach (var asdf in Enumerable.Range(0, 500000000))
{
sw.WriteLine("adsfadsf");//Data from Reader
}
sw.Close();
}
}
string commandText = @"SELECT name FROM {0} WHERE name NOT LIKE '%@%'";
SqlCommand sqlCommand = new SqlCommand(string.Format(commandText, list.TableName.SQLEncapsulate()),
_connection);
using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader())
{
while (sqlDataReader.Read())
{
yield return sqlDataReader["name"].ToString();
}
}