【问题标题】:Read Line From Text File With More Than Int.Max Number of Lines从文本文件中读取行数超过 Int.Max 的行
【发布时间】:2015-08-13 19:52:39
【问题描述】:

我已经用谷歌搜索并查看了几个答案,但我还没有找到解决方案: 我有一个包含超过 int.max 行数的 .txt 文件。如何读取编号 > int.max 的特定行?我发现this 问题的答案列为能够

string line = File.ReadLines(FileName).Skip(14).Take(1).First();

但不幸的是,.Skip() 扩展方法不接受 Long(或者在我需要的情况下为 ULong)参数。

所以我开始寻找重载 .Skip 扩展名(或更准确地说是我自己的)以接受 ULong 并发现 this 这对我没有帮助,因为它与 Linq 到实体有关。

请有人帮我了解如何从行号为 > int32.Max 的文本文件中读取特定行

谢谢

【问题讨论】:

  • 我们所说的规模有多大?您可以将文件拆分为
  • @mjw 是的,我确信我可以做到……我希望不必这样做。

标签: c# file ulong


【解决方案1】:

您可以编写自己的Skip作为扩展方法

public static IEnumerable<T> MySkip<T>(this IEnumerable<T> list, ulong n)
{
    ulong i = 0;
    foreach(var item in list)
    {
        if (i++ < n) continue;
        yield return item;
    }
}

【讨论】:

  • yield break 完全是多余的。
  • @Eser IEnumerable 可以处理的内容有限制吗?
  • @MegaMark 这是一个MoveNext的循环,得到Current。所以没有限制。
  • @MegaMark 否。特定实现可以处理的内容是有限的,但该接口非常干净地支持无限序列。
  • 你们是TYVM的救星
猜你喜欢
  • 2020-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多