배열로 읽으려는 파일이 있습니다.LINQ로 텍스트 파일 읽기
string[] allLines = File.ReadAllLines(@"path to file");
배열을 반복하고 패턴이 포함 된 각 줄을 찾고 줄 번호와 줄 자체를 표시 할 수 있음을 알고 있습니다.
내 질문은 :
는 LINQ와 같은 일을 할 수 있습니까?
배열로 읽으려는 파일이 있습니다.LINQ로 텍스트 파일 읽기
string[] allLines = File.ReadAllLines(@"path to file");
배열을 반복하고 패턴이 포함 된 각 줄을 찾고 줄 번호와 줄 자체를 표시 할 수 있음을 알고 있습니다.
내 질문은 :
는 LINQ와 같은 일을 할 수 있습니까?
음 예 - 인덱스는 우리가 선 자체뿐만 아니라 줄 번호를 포함하는 익명 형식에 투사하여이 작업을 수행 할 수 있습니다 걸리는 Select()
오버로드를 사용하여 :
var targetLines = File.ReadAllLines(@"foo.txt")
.Select((x, i) => new { Line = x, LineNumber = i })
.Where(x => x.Line.Contains("pattern"))
.ToList();
foreach (var line in targetLines)
{
Console.WriteLine("{0} : {1}", line.LineNumber, line.Line);
}
콘솔 출력은 부작용이므로 LINQ 쿼리 자체와 분리되어 있어야합니다.
이 같은 작업을해야합니다
var result = from line in File.ReadAllLines(@"path")
where line.Substring(0,1) == "a" // put your criteria here
select line
LINQ를 사용할 수 있습니다. 그러나 줄 번호도 필요하기 때문에 코드를 반복하여 읽을 수 있습니다.
const string pattern = "foo";
for (int lineNumber = 1; lineNumber <= allLines.Length; lineNumber++)
{
if (allLines[lineNumber-1].Contains(pattern))
{
Console.WriteLine("{0}. {1}", lineNumber, allLines[i]);
}
}
Bravo !! 일종의 익명 형식을 사용할 수있는 무언가가 포함될 것이라고 생각했습니다. 단지 두 개를 조합 할 수 없었습니다. – coson