2015-08-13 69 views
3

我已谷歌搜索,看了几个答案,但我还没有找到这个解决方案: 我有一个.txt文件是由多个int.max行数。我如何阅读一个特定的行,其编号是> int.max?我发现this问题其中有列为能够从文本文件中读取行数超过Int.Max的行数

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

但不幸的是.Skip()扩展方法不接受长(或在我需要的情况下ULONG)参数的答案。

因此,我开始寻找过载.Skip扩展名(或更准确地使我自己)接受ULong,并发现this哪些没有帮助我,因为它涉及到Linq的实体。

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

感谢

+0

我们说话多大?你可以将文件分割为 mjw

+0

@mjw是的,我确信我可以做到这一点......我希望不必这样做。 – MegaMark

回答

6

您可以编写自己的跳过作为一个扩展方法

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

+0

@Eser IEnumerable可以处理什么限制? – MegaMark

+0

@MegaMark它是* MoveNext *的循环,并获取* Current *。所以没有限制。 – Eser