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()
,它将返回下一个订单号并递增计数器.
目前尚不清楚您的意思是什么或您认为失败是什么,但是Enumerable.Range的参数是start
and count
,不是start
and end
。
如果要生成从0开始到1000结束的数字,则必须编写:
Enumerable.Range(0,1001);
Run Code Online (Sandbox Code Playgroud)
如果您有其他问题(例如,在用户调用之间或在用户之间或用户之间,顺序不持久),则必须具体说明。
也许您的意思是您存储在ViewData中的IEnumerable不会像您在View中所期望的那样持久化?这是因为Range返回的对象实现IEnumerable并使用延迟执行来生成请求的值。除非您使用a for
或ToArray()强制进行枚举,否则根本不会生成数字。将对象存储在某处不会强制进行枚举。
归档时间: |
|
查看次数: |
34679 次 |
最近记录: |