生成一系列数字

Pol*_*Dev 9 c# sequence asp.net-mvc-2

我想在asp.net mvc2中创建序列号..

那么数字应该从{ 0 to 1000}.我试过跟随,

 var seq = Enumerable.Range(1, 1000);
        ViewData["OrderNo"] = seq;
Run Code Online (Sandbox Code Playgroud)

在视图中:

 <%:Html.Hidden("OrderNo") %>
            <%:ViewData["OrderNo"] %>  
Run Code Online (Sandbox Code Playgroud)

我的结果是

System.Linq.Enumerable+<RangeIterator>d__b8
Run Code Online (Sandbox Code Playgroud)

但是当在视图中获得价值时它不起作用......如何生成序列号?

Jod*_*ell 27

如果要枚举一系列数字(IEnumerable<int>)0到变量end,请尝试

Enumerable.Range(0, ++end);
Run Code Online (Sandbox Code Playgroud)

在解释中,要获得从0到1000的数字序列,您希望序列从0开始(记住在0到1000之间有1001个数字,包括0和1000).


如果你想要一个无限的线性系列,你可以写一个像这样的函数

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

您可以使用它

var ZeroTo1000 = Series().Take(1001);
Run Code Online (Sandbox Code Playgroud)

如果你想要一个函数,你可以反复调用以生成递增的数字,也许你想要的东西.

using System.Threading;

private static int orderNumber = 0;

int Seq()
{
    return Interlocked.Increment(ref orderNumber);
}
Run Code Online (Sandbox Code Playgroud)

当您致电时Seq(),它将返回下一个订单号并递增计数器.


Pan*_*vos 5

目前尚不清楚您的意思是什么或您认为失败是什么,但是Enumerable.Range的参数是startand count,不是startand end

如果要生成从0开始到1000结束的数字,则必须编写:

Enumerable.Range(0,1001);
Run Code Online (Sandbox Code Playgroud)

如果您有其他问题(例如,在用户调用之间或在用户之间或用户之间,顺序不持久),则必须具体说明。

也许您的意思是您存储在ViewData中的IEnumerable不会像您在View中所期望的那样持久化?这是因为Range返回的对象实现IEnumerable并使用延迟执行来生成请求的值。除非您使用a for或ToArray()强制进行枚举,否则根本不会生成数字。将对象存储在某处不会强制进行枚举。