Int64创建一个数字范围

时间:2018-04-17 19:46:31

标签: c# sequence number-formatting

我需要能够按顺序创建长度超过19位的数字范围。

我尝试过使用 Enumerable.Range(120000003463014,50000).ToList();

哪个适用于较小的数字,但使用上面的我得到一个错误,说它对于int32号太大了。有没有办法创建一个大数字的顺序范围(15位数有时我甚至会使用25位数字)。提前谢谢

P.S。我当前问题的起始编号是 128854323463014 结尾 # 128854323513013

2 个答案:

答案 0 :(得分:2)

您可以创建自己的接受long的版本:

public IEnumerable<long> CreateRange(long start, long count)
{
    var limit = start + count;

    while (start < limit)
    {
        yield return start;
        start++;
    }
}

用法:

var range = CreateRange(120000003463014, 50000);

答案 1 :(得分:0)

我喜欢使用的一些长扩展名:

// ***
// *** Long Extensions
// ***
public static IEnumerable<long> Range(this long start, long count) => start.RangeBy(count, 1);
public static IEnumerable<long> RangeBy(this long start, long count, long by) {
    for (; count-- > 0; start += by)
        yield return start;
}
public static IEnumerable<long> To(this long start, long finish) => start.ToBy(finish, 1);
public static IEnumerable<long> ToBy(this long start, long end, long by) {
    var absBy = Math.Abs(by);
    if (start <= end)
        for (; start <= end; start += by)
            yield return start;
    else
        for (; start >= end; start -= by)
            yield return start;
}
public static IEnumerable<long> DownTo(this long start, long finish) => start.ToBy(finish, 1);
public static IEnumerable<long> DownToBy(this long start, long min, long by) => start.ToBy(min, by);