从包含超过Int.Max行数的文本文件中读取行

3
我已经通过谷歌搜索和查看了多个答案,但是我没有找到解决此问题的方法: 我有一个包含超过int.max行数的.txt文件。如何读取其行号大于int.max的特定行?我在这里找到了一个问题,其中有一个答案可以实现此功能。
string line = File.ReadLines(FileName).Skip(14).Take(1).First();

但不幸的是,.Skip()扩展方法不接受Long(或在我需要的情况下是ULong)参数。
因此,我开始寻找重载.Skip扩展方法(更准确地说是自己制作),以接受ULong,并发现了这个,但它与Linq to entities有关,对我没有帮助。
请问有人能帮我理解如何从文本文件中读取特定行,其中行号>int32.Max吗?
谢谢。

我们需要扩大多少?您能将文件分成小于int.max的块,并进行一些数学计算以确定您需要在第二个、第三个等块中的位置吗? - mjw
@mjw 是的,我肯定我可以做到...但我希望不必这样做。 - MegaMark
1个回答

6
你可以编写自己的扩展方法来实现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;
    }
}

1
yield break 是完全多余的。 - Servy
@Eser,IEnumerable 能够处理的数据量是否有限制? - MegaMark
@MegaMark 这是一个 MoveNext 循环,并获取 Current。因此没有限制。 - Eser
@MegaMark 不是的。特定实现有其处理能力的限制,但接口非常干净地支持无限序列。 - Servy
你们是救命恩人,非常感谢! - MegaMark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接