#92μ λΉμ·ν λ¬Έμ κ° μμ΅λλ€. κ·Έλ°λ° 5λ μ΄ λμ λ¬Έμ λ₯Ό λΆλͺνμΌ νλ κ±΄μ§ μ λͺ¨λ₯΄κ² μ΄μ μλ‘ νλ λ§λ€κ³ μμ΅λλ€.
μ΄κ±°λ λ μ½λμμ Count()
λ₯Ό νΈμΆνλ©΄ 컀μκ° λκΉμ§ κ°κ³ λ μ½λμ λν μΆκ° operation/ foreach
루νκ° μ무 κ²λ λ°ννμ§ μλλ€λ κ²μ μκ³ μμ΅λλ€.
λ΄ μ½λμ κ°μλ λ€μκ³Ό κ°μ΅λλ€
````C#
var myCSV = μλ‘μ΄ CsvReader(File.OpenText(txtBox_CSVFile.Text));
myCSV.Configuration.RegisterClassMap
var record = new MyRecordClass();
var allRecords = myCSV.EnumerateRecords(record);
int recordsLength = allRecords.Count<MyRecordClass>();
foreach (var r in allRecords)
{
/* some read/write operation here
*/
scannedCSVEntry++;
progress.value = scannedCSVEntry/recordsLength;
}
````
recordsLength
λ νλͺ©μ μ²λ¦¬νλ λμ μ§νλ₯ νμμ€μ μ
λ°μ΄νΈν΄μΌ νλ―λ‘ μ¬κΈ°μμ μ€μν©λλ€.
νμ§λ§ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ €λ©΄ μ΄λ»κ² ν΄μΌ ν©λκΉ?
λͺ κ°μ§ λ°©λ²μ΄ μμ΅λλ€.
ToList
λ₯Ό μννμ¬ μ 체λ₯Ό λ©λͺ¨λ¦¬λ‘ κ°μ Έμ΅λλ€. κ·Έλ° λ€μ Count
ν¬ν¨νμ¬ λ°μ΄ν°μ λν΄ μ¬λ¬ μμ
μ μνν μ μμ΅λλ€.Context.RawRow
μμ±μ μ¬μ©νμ¬ μ§ν μν©μ μνν μ μμ΅λλ€.κ°μ¬ ν΄μ,
κ²°κ΅ λ°©λ² 2λ₯Ό μ ννμ΅λλ€.
C#
StreamReader sr = File.OpenText(txtBox_CSVFile.Text);
int recordsLength = 0;
while(sr.ReadLine() != null)
{
++recordsLength;
}
recordsLength--; // discount 1 line because there are column headers in first row.
Console.WriteLine("recordsLength : " + recordsLength);
sr.Close();
EnumerateRecords()
λ λͺ¨λ νλͺ©μ μλΆμ 곡κΈν ν μ€νΈλ¦Όμ μλμΌλ‘ λ«μ΅λκΉ? ν¨μλ₯Ό νΈμΆν ν Close()
λ₯Ό νΈμΆν΄μΌ νλμ§ κΆκΈν©λλ€.
λ΄ μ μμ using
λΈλ‘μΌλ‘ λννλ κ²μ
λλ€.
using(StreamReader sr = File.OpenText(txtBox_CSVFile.Text))
{
int recordsLength = 0;
while(sr.ReadLine() != null)
{
++recordsLength;
}
recordsLength--; // discount 1 line because there are column headers in first row.
Console.WriteLine("recordsLength : " + recordsLength);
}
μ§νλ₯ νμ μ€μ μ
λ°μ΄νΈνλ €λ©΄ μ 체 νμΌμ λ¨Όμ μ½μ§ μκ³ ν° νμΌμμ stream.Position
ν¨κ³Όμ μ
λλ€.
using(StreamReader sr = File.OpenText(txtBox_CSVFile.Text))
{
var csvReader = new new CsvHelper.CsvReader(sr);
while (csvReader.Read())
{
double progress = (double)sr.BaseStream.Position / sr.BaseStream.Length;
}
}
GetRecordsμμλ μλν΄μΌ νμ§λ§ ν μ€νΈνμ§ μμμ΅λλ€.
foreach(var record in csvReader.GetRecords<MyRecordClass>())
{
double progress = (double)sr.BaseStream.Position / sr.BaseStream.Length;
}
λλ λΉμ μ ν΄κ²°μ± μ νμΈνμ΅λλ€
foreach(var record in csvReader.GetRecords<MyRecordClass>())
{
double progress = (double)sr.BaseStream.Position / sr.BaseStream.Length;
}
λλ₯Ό μν΄ μλνμ§ μμλ€.
νμ§λ§ λΉμ μ μ΄κ²μ ν μ μμ΅λλ€
foreach(var record in csvReader.GetRecords<MyRecordClass>())
{
double progress = (double)csvReader.Context.CharPosition / csvReader.Context.CharsRead;
}
μνλ κ²°κ³Όλ₯Ό μ»κΈ° μν΄
κ°μ₯ μ μ©ν λκΈ
μ§νλ₯ νμ μ€μ μ λ°μ΄νΈνλ €λ©΄ μ 체 νμΌμ λ¨Όμ μ½μ§ μκ³ ν° νμΌμμ
stream.Position
ν¨κ³Όμ μ λλ€.GetRecordsμμλ μλν΄μΌ νμ§λ§ ν μ€νΈνμ§ μμμ΅λλ€.