cláusula OrderBy (translation from VPE for Csharp Reference)
Uma expressão de consulta, o orderby cláusula faz com que a sequência retornada ou subsequence (agrupar) a ser classificado em crescente ou decrescente. Várias chaves podem ser especificadas para executar uma ou mais operações de classificar secundária.A classificação é realizada pelo comparador padrão para o tipo do elemento.A ordem de classificar padrão é crescente.Você também pode especificar um comparador personalizado.No entanto, ele só está disponível ao usar a sintaxe do método.Para obter mais informações, consulte Classificando Dados.
Exemplo
No exemplo a seguir, a primeira consulta classifica as palavras na ordem alfabético a partir de um e segunda consulta classifica as mesmas palavras em ordem decrescente.(The ascending palavra-chave é o valor de classificar padrão e pode ser omitido.)
class OrderbySample1
{
static void Main()
{
// Create a delicious data source.
string[] fruits = { "cherry", "apple", "blueberry" };
// Query for ascending sort.
IEnumerable<string> sortAscendingQuery =
from fruit in fruits
orderby fruit //"ascending" is default
select fruit;
// Query for descending sort.
IEnumerable<string> sortDescendingQuery =
from w in fruits
orderby w descending
select w;
// Execute the query.
Console.WriteLine("Ascending:");
foreach (string s in sortAscendingQuery)
{
Console.WriteLine(s);
}
// Execute the query.
Console.WriteLine(Environment.NewLine + "Descending:");
foreach (string s in sortDescendingQuery)
{
Console.WriteLine(s);
}
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
/* Output:
Ascending:
apple
blueberry
cherry
Descending:
cherry
blueberry
apple
*/
O exemplo a seguir executa um principal classificar sobrenomes dos alunos e, em seguida, uma ordenação secundária em seus nomes primeiro.
class OrderbySample2
{
// The element type of the data source.
public class Student
{
public string First { get; set; }
public string Last { get; set; }
public int ID { get; set; }
}
public static List<Student> GetStudents()
{
// Use a collection initializer to create the data source. Note that each element
// in the list contains an inner sequence of scores.
List<Student> students = new List<Student>
{
new Student {First="Svetlana", Last="Omelchenko", ID=111},
new Student {First="Claire", Last="O'Donnell", ID=112},
new Student {First="Sven", Last="Mortensen", ID=113},
new Student {First="Cesar", Last="Garcia", ID=114},
new Student {First="Debra", Last="Garcia", ID=115}
};
return students;
}
static void Main(string[] args)
{
// Create the data source.
List<Student> students = GetStudents();
// Create the query.
IEnumerable<Student> sortedStudents =
from student in students
orderby student.Last ascending, student.First ascending
select student;
// Execute the query.
Console.WriteLine("sortedStudents:");
foreach (Student student in sortedStudents)
Console.WriteLine(student.Last + " " + student.First);
// Now create groups and sort the groups. The query first sorts the names
// of all students so that they will be in alphabetical order after they are
// grouped. The second orderby sorts the group keys in alpha order.
var sortedGroups =
from student in students
orderby student.Last, student.First
group student by student.Last[0] into newGroup
orderby newGroup.Key
select newGroup;
// Execute the query.
Console.WriteLine(Environment.NewLine + "sortedGroups:");
foreach (var studentGroup in sortedGroups)
{
Console.WriteLine(studentGroup.Key);
foreach (var student in studentGroup)
{
Console.WriteLine(" {0}, {1}", student.Last, student.First);
}
}
// Keep the console window open in debug mode
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
/* Output:
sortedStudents:
Garcia Cesar
Garcia Debra
Mortensen Sven
O'Donnell Claire
Omelchenko Svetlana
sortedGroups:
G
Garcia, Cesar
Garcia, Debra
M
Mortensen, Sven
O
O'Donnell, Claire
Omelchenko, Svetlana
*/
Comentários
No momento da compilar, a orderby cláusula for convertida em uma telefonar para o OrderBy método. Várias chaves no orderby cláusula traduzir para ThenBy chamadas de método.
Consulte também
Conceitos
Expressões de consulta do LINQ (guia de programação translation from VPE for Csharp)
Referência
cláusula de agrupar (translation from VPE for Csharp Reference)
Outros recursos
Palavras-chave de consulta (translation from VPE for Csharp Reference)