如何将文本字符串数组的数量限制为15

Chr*_*sen 4 c#

如何将从文档中拉出的线条一次限制为15行.现在它一次显示所有行.谢谢.

class Program {
  static void Main(string[] args) {
    string[] lines = System.IO.File.ReadAllLines(
        @"C:\Users\chri749y\Documents\Skrive til fil\Testprogram.txt");

    foreach (string line in lines) {
        Console.WriteLine("{0}", line);
    }

    Console.ReadKey();
  }
}
Run Code Online (Sandbox Code Playgroud)

Dmi*_*nko 10

如果你只想要 15线,试试专为此设计的Take(Linq):

var lines = System.IO.File
  .ReadLines(@"C:\Users\chri749y\Documents\Skrive til fil\Testprogram.txt")
  .Take(15);
Run Code Online (Sandbox Code Playgroud)

如果你想要批量处理,即得到0 .. 14线,然后是15 .. 29线等.

// Split input into batches with at most "size" items each
private static IEnumerable<T[]> Batch<T>(IEnumerable<T> lines, int size) {
  List<T> batch = new List<T>(size);

  foreach (var item in lines) {
    if (batch.Count >= size) {
      yield return batch.ToArray();

      batch.Clear();
    }

    batch.Add(item);
  }

  if (batch.Count > 0)   // tail, possibly incomplete batch
    yield return batch.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

然后

var batches = Batch(System.IO.File
  .ReadLines(@"C:\Users\chri749y\Documents\Skrive til fil\Testprogram.txt"),
               15);

foreach (var batch in batches) { // Array with at most 15 items
  foreach (var line in batch) {  
    ... 
  }
}
Run Code Online (Sandbox Code Playgroud)

  • @Cid:不; 你会得到顶级的'15`行*两次*; 如果你想*跳过*15行,然后只取15行 - .Skip(15).取(15) (3认同)