C#Linq将文件读入列表

Chr*_*ris 0 .net c# linq csv

我正在将csv文件读入列表.由于每个文件包含许多行并且阅读耗时,我只需要检查每个文件的前100行.如何让Linq只读取前100行,然后继续下一个文件?

For(i=0;i<10;i++)
     line_list = (from line in File.ReadLines(files[i])
                  let field = line.Split(',')
                  where field[2] == "Apple" && !field[3].Contains("Banana")
                  select field).ToList();
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 5

您可以使用Enumerable.Take仅前100行:

var first100Lines = File.ReadLines(path).Take(100);
Run Code Online (Sandbox Code Playgroud)

为了它的价值,这里是一体的:

List<List<string[]>> allFileLineColumns = files
    .Select(fPath => 
        File.ReadLines(fPath)
            .Take(100)
            .Select(l => new { Line=l, Cols=l.Split(',') })
            .Where(x => x.Cols.Length >= 4 && x.Cols[2] == "Apple" && !x.Cols[3].Contains("Banana"))
            .Select(x => x.Cols)
            .ToList()
    ).ToList();
Run Code Online (Sandbox Code Playgroud)

虽然我会将它分成多个部分以提高可读性.