我需要能够按顺序创建长度超过19位的数字范围。
我尝试过使用 Enumerable.Range(120000003463014,50000).ToList();
哪个适用于较小的数字,但使用上面的我得到一个错误,说它对于int32号太大了。有没有办法创建一个大数字的顺序范围(15位数有时我甚至会使用25位数字)。提前谢谢
P.S。我当前问题的起始编号是 128854323463014 结尾 # 128854323513013
答案 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);