Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Generate a sequence of numbers [duplicate]

I want to create sequence numbers in asp.net mvc2..

Then number should start from { 0 to 1000}. I tried like following,

 var seq = Enumerable.Range(1, 1000);
        ViewData["OrderNo"] = seq;

In view:

 <%:Html.Hidden("OrderNo") %>
            <%:ViewData["OrderNo"] %>  

My result is

System.Linq.Enumerable+<RangeIterator>d__b8

But when getting value in view it is not working... How to generate sequential numbers?

like image 564
PoliDev Avatar asked Nov 13 '13 09:11

PoliDev


2 Answers

If you want to enumerate a sequence of numbers (IEnumerable<int>) from 0 to a variable end, then try

Enumerable.Range(0, ++end);

In explanation, to get a sequence of numbers from 0 to 1000, you want the sequence to start at 0 (remembering that there are 1001 numbers between 0 and 1000, inclusive).


If you want an unlimited linear series, you could write a function like

IEnumerable<int> Series(int k = 0, int n = 1, int c = 1)
{
    while (true)
    {
        yield return k;
        k = (c * k) + n;
    }
}

which you could use like

var ZeroTo1000 = Series().Take(1001);

If you want a function you can call repeatedly to generate incrementing numbers, perhaps you want somthing like.

using System.Threading;

private static int orderNumber = 0;

int Seq()
{
    return Interlocked.Increment(ref orderNumber);
}

When you call Seq() it will return the next order number and increment the counter.

like image 143
Jodrell Avatar answered Oct 20 '22 01:10

Jodrell


It's unclear what you mean or what you consider a failure, but the parameters of Enumerable.Range are start and count, not start and end.

If you want to generate numbers that start from 0 and end at 1000 you will have to write:

Enumerable.Range(0,1001);

If you have a different problem (eg the sequence doesn't persist between user calls, or from user to user or whatever), you will have to be specific.

Perhaps what you mean is that the IEnumerable you store in the ViewData doesn't get persisted as you expected in the View? That's because Range returns an object that implements IEnumerable and uses deferred execution to produce the requested values. Unless you force the enumeration with a for or a ToArray() the numbers will not be generated at all. Storing the object somewhere doesn't force an enumeration.

like image 26
Panagiotis Kanavos Avatar answered Oct 20 '22 00:10

Panagiotis Kanavos