While loop in ASP.NET MVC Razor engine
Definition
A while loop to repeat the execution of a sequence of statements as long as a certain Boolean condition is true. The Boolean condition to break out of the loop when the boolean condition becomes false.
@{
int i = 0;
while (i < 15)
{
i++;
<p>@i</p>
}
}
Examples of use
Display integers in ascending order as the sum of the digits is strictly lower than 25.
@{
int n = 0;
while (n % 10 + (n / 10) % 10 + (n / 100) % 10 < 25)
{
@n;
@Html.Raw("; ");
n++;
}
}
The result:
0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20; 21; 22; 23; 24; 25; 26; 27; 28; 29; 30; 31; 32; 33; 34; 35; 36; 37; 38; 39; 40; 41; 42; 43; 44; 45; 46; 47; 48; 49; 50; 51; 52; 53; 54; 55; 56; 57; 58; 59; 60; 61; 62; 63; 64; 65; 66; 67; 68; 69; 70; 71; 72; 73; 74; 75; 76; 77; 78; 79; 80; 81; 82; 83; 84; 85; 86; 87; 88; 89; 90; 91; 92; 93; 94; 95; 96; 97; 98; 99; 100; 101; 102; 103; 104; 105; 106; 107; 108; 109; 110; 111; 112; 113; 114; 115; 116; 117; 118; 119; 120; 121; 122; 123; 124; 125; 126; 127; 128; 129; 130; 131; 132; 133; 134; 135; 136; 137; 138; 139; 140; 141; 142; 143; 144; 145; 146; 147; 148; 149; 150; 151; 152; 153; 154; 155; 156; 157; 158; 159; 160; 161; 162; 163; 164; 165; 166; 167; 168; 169; 170; 171; 172; 173; 174; 175; 176; 177; 178; 179; 180; 181; 182; 183; 184; 185; 186; 187; 188; 189; 190; 191; 192; 193; 194; 195; 196; 197; 198; 199; 200; 201; 202; 203; 204; 205; 206; 207; 208; 209; 210; 211; 212; 213; 214; 215; 216; 217; 218; 219; 220; 221; 222; 223; 224; 225; 226; 227; 228; 229; 230; 231; 232; 233; 234; 235; 236; 237; 238; 239; 240; 241; 242; 243; 244; 245; 246; 247; 248; 249; 250; 251; 252; 253; 254; 255; 256; 257; 258; 259; 260; 261; 262; 263; 264; 265; 266; 267; 268; 269; 270; 271; 272; 273; 274; 275; 276; 277; 278; 279; 280; 281; 282; 283; 284; 285; 286; 287; 288; 289; 290; 291; 292; 293; 294; 295; 296; 297; 298; 299; 300; 301; 302; 303; 304; 305; 306; 307; 308; 309; 310; 311; 312; 313; 314; 315; 316; 317; 318; 319; 320; 321; 322; 323; 324; 325; 326; 327; 328; 329; 330; 331; 332; 333; 334; 335; 336; 337; 338; 339; 340; 341; 342; 343; 344; 345; 346; 347; 348; 349; 350; 351; 352; 353; 354; 355; 356; 357; 358; 359; 360; 361; 362; 363; 364; 365; 366; 367; 368; 369; 370; 371; 372; 373; 374; 375; 376; 377; 378; 379; 380; 381; 382; 383; 384; 385; 386; 387; 388; 389; 390; 391; 392; 393; 394; 395; 396; 397; 398; 399; 400; 401; 402; 403; 404; 405; 406; 407; 408; 409; 410; 411; 412; 413; 414; 415; 416; 417; 418; 419; 420; 421; 422; 423; 424; 425; 426; 427; 428; 429; 430; 431; 432; 433; 434; 435; 436; 437; 438; 439; 440; 441; 442; 443; 444; 445; 446; 447; 448; 449; 450; 451; 452; 453; 454; 455; 456; 457; 458; 459; 460; 461; 462; 463; 464; 465; 466; 467; 468; 469; 470; 471; 472; 473; 474; 475; 476; 477; 478; 479; 480; 481; 482; 483; 484; 485; 486; 487; 488; 489; 490; 491; 492; 493; 494; 495; 496; 497; 498; 499; 500; 501; 502; 503; 504; 505; 506; 507; 508; 509; 510; 511; 512; 513; 514; 515; 516; 517; 518; 519; 520; 521; 522; 523; 524; 525; 526; 527; 528; 529; 530; 531; 532; 533; 534; 535; 536; 537; 538; 539; 540; 541; 542; 543; 544; 545; 546; 547; 548; 549; 550; 551; 552; 553; 554; 555; 556; 557; 558; 559; 560; 561; 562; 563; 564; 565; 566; 567; 568; 569; 570; 571; 572; 573; 574; 575; 576; 577; 578; 579; 580; 581; 582; 583; 584; 585; 586; 587; 588; 589; 590; 591; 592; 593; 594; 595; 596; 597; 598; 599; 600; 601; 602; 603; 604; 605; 606; 607; 608; 609; 610; 611; 612; 613; 614; 615; 616; 617; 618; 619; 620; 621; 622; 623; 624; 625; 626; 627; 628; 629; 630; 631; 632; 633; 634; 635; 636; 637; 638; 639; 640; 641; 642; 643; 644; 645; 646; 647; 648; 649; 650; 651; 652; 653; 654; 655; 656; 657; 658; 659; 660; 661; 662; 663; 664; 665; 666; 667; 668; 669; 670; 671; 672; 673; 674; 675; 676; 677; 678; 679; 680; 681; 682; 683; 684; 685; 686; 687; 688; 689; 690; 691; 692; 693; 694; 695; 696; 697; 698; 699; 700; 701; 702; 703; 704; 705; 706; 707; 708; 709; 710; 711; 712; 713; 714; 715; 716; 717; 718; 719; 720; 721; 722; 723; 724; 725; 726; 727; 728; 729; 730; 731; 732; 733; 734; 735; 736; 737; 738; 739; 740; 741; 742; 743; 744; 745; 746; 747; 748; 749; 750; 751; 752; 753; 754; 755; 756; 757; 758; 759; 760; 761; 762; 763; 764; 765; 766; 767; 768; 769; 770; 771; 772; 773; 774; 775; 776; 777; 778; 779; 780; 781; 782; 783; 784; 785; 786; 787; 788; 789; 790; 791; 792; 793; 794; 795; 796; 797; 798;
From a list of guests, show guests from the beginning until the first which was named John.
@{
string[] guests = new string[] { "Paul Turner", "Donald Verner", "John Roberts", "Alison Kris", "Antonio Vivaldi" };
int guest_number = guests.Length;
int g = 0;
bool contains = false;
}
<p>
<ul>
@while (g < guest_number && !contains)
{
contains = guests[g].Contains("John");
@:<li>@guests[g]</li>
g++;
}
</ul>
</p>
Output:
- Paul Turner
- Donald Verner
- John Roberts
View the result of the throw of a dice as long as the sum of all results from the first launch remains below 20.
@helper Index(int i)
{
string[] term = new string[] { "1st", "2nd", "3rd", "{0}th" };
if (i <= 3)
{
@term[i - 1];
}
else
{
@String.Format(term[3], i.ToString());
}
}
@{
int num = 1;
int res = 0;
long sum = 0;
Random r = new Random();
res = r.Next(6);
sum = res;
@:<ul>
@:<li>
@Index(num) roll -> @res
@Html.Raw(" (sum = " + sum.ToString() + ")");
@:</li>
res = r.Next(6);
sum += res;
num++;
while (sum <= 20)
{
@:<li>
@Index(num) roll -> @res
@Html.Raw(" (sum=" + sum.ToString() + ")");
@:</li>
res = r.Next(6);
sum += res;
num++;
}
@:</ul>
}
- 1st roll -> 5 (sum = 5)
- 2nd roll -> 2 (sum=7)
- 3rd roll -> 1 (sum=8)
- 4th roll -> 4 (sum=12)
- 5th roll -> 4 (sum=16)
100m sprint, it wishes to make a preselection to keep only the riders who have a score lower 11s.
@{
string[] sprinters = new string[] { "Ben Johnson", "John Timer", "Oliver Hardy", "Jaimie Sommers", "Julia Gonzales" };
double[] score = new double[] { 9.83, 12, 20, 5, 10 };
int l = sprinters.Length;
Array.Sort(score, sprinters);
int p = 0;
bool not_ended = true;
@Html.Raw("<ol>");
while (p < l && not_ended)
{
not_ended = (score[p] <= 11);
if (not_ended)
{
@Html.Raw("<li>" + sprinters[p] + string.Format(" (score: {0}s)", score[p]) + "</li>");
}
p++;
}
@Html.Raw("</ol>");
}
- Jaimie Sommers (score: 5s)
- Ben Johnson (score: 9,83s)
- Julia Gonzales (score: 10s)
From a series of numbers, we want all the sequences corresponding to the steps of the bubble sort. Show the coloring permutations in the two swapped numbers.
@{
int[] tab = new int[] { 0, 5, 6, 10, -5, 45, -100, 2 };
bool not_sorted = true;
int m = tab.Length;
int len = m;
@:<ul>
while (not_sorted)
{
not_sorted = false;
m--;
for (int i = 0; i < m; i++)
{
if (tab[i] > tab[i + 1])
{
int x = tab[i];
tab[i] = tab[i + 1];
tab[i + 1] = x;
not_sorted = true;
@:<li>
int j = 0;
while (j < len)
{
if (j == i)
{
@:<span style="background-color:blue;color:aliceblue"> @tab[i] @tab[i + 1] </span>
j++;
}
else
{
@:<span style="background-color:yellow;color:mediumvioletred"> @tab[j] </span>
}
j++;
}
@:</li>
}
}
}
@:</ul>
}
- 0 5 6 -5 10 45 -100 2
- 0 5 6 -5 10 -100 45 2
- 0 5 6 -5 10 -100 2 45
- 0 5 -5 6 10 -100 2 45
- 0 5 -5 6 -100 10 2 45
- 0 5 -5 6 -100 2 10 45
- 0 -5 5 6 -100 2 10 45
- 0 -5 5 -100 6 2 10 45
- 0 -5 5 -100 2 6 10 45
- -5 0 5 -100 2 6 10 45
- -5 0 -100 5 2 6 10 45
- -5 0 -100 2 5 6 10 45
- -5 -100 0 2 5 6 10 45
- -100 -5 0 2 5 6 10 45
