什麼是格式?如果是文字,通過TextReader
將是理想的;和xml,一個XmlReader
。如果是任意二進制,則傳入Stream
。
對於大數據,理想的方法儘可能是以非緩衝的方式讀取數據 - 即不要將它全部加載到內存中。迭代器塊可以在這裏很有用,例如這裏只是一個例子,顯示讀數線(但它很容易能夠從數據流中的內置yield return
對象):
public IEnumerable<string> ReadLines(TextReader source)
{
string s;
while ((s = source.ReadLine()) != null)
yield return s;
}
很顯然,在一般情況下,更多的加工每件物品可能都是必需的!
呼叫者現在有你的數據的延遲加載後臺,無緩衝源,例如:
using(var file = File.OpenRead(path))
{
foreach(var customer in YourSpiffyParser(file))
DoSomethingFun(customer);
}
和處理流/ TextReader的等使他們能夠在一個裝飾鏈比其他的東西用它文件;網絡流,內存中的流,壓縮/加密流等。
查看http:// MSDN。 microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx – 2011-03-08 08:13:38