내용 보기

작성자

관리자 (IP : 172.17.0.1)

날짜

2020-07-10 04:41

제목

[C#] 텍스트 파일에서 특정 라인 줄수만 읽어 오기


몇십만줄이라도 LINQ를 사용하면 해당 라인을 바로 읽어 올수 있습니다.
LINQ부분에서 StreamReader 확장메소드을 작성 하여 yield를 작성
아래는 책예제을 약간 변경 햇습니다.

public static IEnumerable<String> Lines(this StreamReader source, int sourceCount)
{
    String line;
    int count = 0;
 
    if (source == null)
        throw new ArgumentNullException("source");
 
    while ((line = source.ReadLine()) != null)
    {
        count++;
        if(sourceCount==count)
            yield
    return line;
    }
}
cs

탐색 부분

public void Test_05_30()
{
    using (StreamReader reader = new StreamReader(@"D:\TestData\CSVData\SA11000_1.csv"))
    {
        var books = from line in reader.Lines(5) where !line.StartsWith("#")
                    let parts = line.Split(',') select new { Title = parts[0],Date = parts[1] };
 
        string strData = string.Empty;
        foreach (var str in books)
        {
            strData = String.Format("{0}", str.Title);
        }
 
        tblMsg.Text = strData;
    }
}
cs


출처1

출처2