The Language Integrated Query |
|
|
Sorting a list consists of re-arranging its members in a
certain order. The arrangement depends on the type of values. That is, the
list can be arranged in alphabetical order, in ascending order, in
chronological order, in incremental order, or in logical order.
|
When you create a list, you add the items in any order
of your choice. When you create a select statement, the items are
added to its list in the order they appear in the main list. When treating
the new list or when presenting it to the user, you may want to arrange it
in alphabetical, numerical, or chronological order. To support this
operation, the LINQ provides the orderdy operator. To apply it,
write the operator before the select operation followed
by the from list. Here is an example:
using System;
using System.Linq;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
public class Exercise : Form
{
private ListBox lbxRegularOrder;
private ListBox lbxSortedOrder;
public Exercise()
{
InitializeComponent();
}
void InitializeComponent()
{
lbxRegularOrder = new ListBox();
lbxRegularOrder.Location = new System.Drawing.Point(12, 12);
lbxRegularOrder.Width = 100;
lbxSortedOrder = new ListBox();
lbxSortedOrder.Location = new System.Drawing.Point(120, 12);
lbxSortedOrder.Width = 100;
Text = "Numbers";
MinimizeBox = false;
MaximizeBox = false;
Controls.Add(lbxRegularOrder);
Controls.Add(lbxSortedOrder);
Load += new EventHandler(ExerciseLoad);
Size = new System.Drawing.Size(240, 145);
StartPosition = FormStartPosition.CenterScreen;
}
private void ExerciseLoad(object sender, EventArgs e)
{
var numbers = new double[] { 12.44, 525.38, 6.28, 2448.32, 632.04 };
var regularOrder = from n
in numbers
select n;
foreach (var member in regularOrder)
lbxRegularOrder.Items.Add(member.ToString());
var sortedOrder = from n
in numbers
orderby n
select n;
foreach (var member in sortedOrder)
lbxSortedOrder.Items.Add(member.ToString());
}
[STAThread]
public static int Main()
{
System.Windows.Forms.Application.Run(new Exercise());
return 0;
}
}
This would produce:
If you apply the orderby operator simply
followed by a variable, the list is ordered alphabetically or numerically
depending on the types of values in the list. This is referred to as
ascending. To re-enforce this, you can follow the variable with the
ascending keyword. Here is an example:
var sortedOrder = from n
in numbers
orderby n ascending
select n;
After applying a where condition, you can sort
the list using an orderby operator. For example, to get a
list of odd numbers arranged in numerical order, you would write the
statement as follows:
private void ExerciseLoad(object sender, EventArgs e)
{
var numbers = new double[] { 12, 445, 25, 38, 61, 285, 2448, 32, 6320, 49 };
var number = from n
in numbers
where n % 2 != 0
orderby n ascending
select n;
foreach (var member in number)
lbxNumbers.Items.Add(member.ToString());
}
This would produce: