は、私がアクセスする必要IEnumerableを<T> File.ReadLines()でアクセス回線のパフォーマンスを改善する方法
(ファイルが非常に大きく得ることができるので、私はむしろReadAllLinesよりも、これを使用しました)それぞれの行とそれに対するアクションを実行します。だから私のコードは、この
IEnumerable<String> lines = File.ReadLines("c:\myfile.txt", new UTF8Encoding());
StringBuilder sb = new StringBuilder();
int totalLines = lines.Count(); //used for progress calculation
//use for instead of foreach here - easier to know the line I'm on for progress percent complete calculation
for(int i = 0; i < totalLines; i++){
//for example get the line and do something
sb.Append(lines.ElementAt(i) + "\r\n");
//get the line again using ElementAt(i) and do something else
//...ElementAt(I)...
}
ようなもので、それは、位置iに取得するために全体IEmumerableを反復する必要があるため、だから私のボトルネックは、私はElementAt(i)
にアクセスするたびにあります。
File.ReadLinesを引き続き使用する方法はありますか?
EDIT - 私が最初に数える理由は、ユーザーに表示するための進捗状況を計算することができるためです。だから、私はそのためにforeachを削除したのです。
あなたは単にそれを列挙することはできません...? 'foreach(行内のvar行){...}' – pinkfloydx33
'File.ReadLines'のドキュメントを見ましたか? – Servy
本当にカウントが必要ですか?そうしないと、実際には 'Count()'と* then * iteratingを呼び出さないようにする必要があります。 –