Esempi di sintassi dell'espressione di query: ordinamento

Gli esempi di questo argomento illustrano come usare i metodi OrderBy e OrderByDescending per eseguire query sul Modello Sales di AdventureWorks usando la sintassi dell’espressione di query. Il modello Sales di AdventureWorks usato in questi esempi è compilato in base alle tabelle Contact, Address, Product, SalesOrderHeader e SalesOrderDetail del database di esempio AdventureWorks.

Gli esempi in questo argomento usano le istruzioni using/Imports seguenti:

using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Objects;
using System.Globalization;
using System.Data.EntityClient;
using System.Data.SqlClient;
using System.Data.Common;

Option Explicit On
Option Strict On
Imports System.Data.Objects
Imports System.Globalization

OrderBy

Esempio

Nell'esempio seguente viene usato OrderBy per restituire un elenco di contatti ordinati in base al cognome.

using (AdventureWorksEntities context = new AdventureWorksEntities())
{
    IQueryable<Contact> sortedNames =
        from n in context.Contacts
        orderby n.LastName
        select n;

    Console.WriteLine("The sorted list of last names:");
    foreach (Contact n in sortedNames)
    {
        Console.WriteLine(n.LastName);
    }
}
Using context As New AdventureWorksEntities
    Dim contacts As ObjectSet(Of Contact) = context.Contacts

    Dim sortedContacts = _
        From contact In contacts _
        Order By contact.LastName _
        Select contact

    Console.WriteLine("The sorted list of last names:")
    For Each n As Contact In sortedContacts
        Console.WriteLine(n.LastName)
    Next
End Using

Esempio

Nell'esempio seguente viene usato OrderBy per ordinare un elenco di contatti in base alla lunghezza del cognome.

using (AdventureWorksEntities context = new AdventureWorksEntities())
{
    IQueryable<Contact> sortedNames =
        from n in context.Contacts
        orderby n.LastName.Length
        select n;

    Console.WriteLine("The sorted list of last names (by length):");
    foreach (Contact n in sortedNames)
    {
        Console.WriteLine(n.LastName);
    }
}
Using context As New AdventureWorksEntities
    Dim contacts As ObjectSet(Of Contact) = context.Contacts

    Dim sortedNames = _
        From n In contacts _
        Order By n.LastName.Length _
        Select n

    Console.WriteLine("The sorted list of last names (by length):")
    For Each n As Contact In sortedNames
        Console.WriteLine(n.LastName)
    Next
End Using

OrderByDescending

Esempio

Nell'esempio seguente viene usato orderby… descending (Order By … Descending in Visual Basic), equivalente al metodo OrderByDescending, per ordinare il listino prezzi dal prezzo massimo al prezzo minimo.

using (AdventureWorksEntities context = new AdventureWorksEntities())
{
    IQueryable<Decimal> sortedPrices =
        from p in context.Products
        orderby p.ListPrice descending
        select p.ListPrice;

    Console.WriteLine("The list price from highest to lowest:");
    foreach (Decimal price in sortedPrices)
    {
        Console.WriteLine(price);
    }
}
Using context As New AdventureWorksEntities
    Dim products As ObjectSet(Of Product) = context.Products

    Dim sortedPrices = _
        From product In products _
        Order By product.ListPrice Descending _
        Select product.ListPrice

    Console.WriteLine("The list price from highest to lowest:")
    For Each price As Decimal In sortedPrices
        Console.WriteLine(price)
    Next
End Using

ThenBy

Esempio

Nell'esempio seguente vengono usati OrderBy e ThenBy per restituire un elenco di contatti ordinati in base al cognome e quindi al nome.

using (AdventureWorksEntities context = new AdventureWorksEntities())
{
    IQueryable<Contact> sortedContacts =
        from contact in context.Contacts
        orderby contact.LastName, contact.FirstName
        select contact;

    Console.WriteLine("The list of contacts sorted by last name then by first name:");
    foreach (Contact sortedContact in sortedContacts)
    {
        Console.WriteLine(sortedContact.LastName + ", " + sortedContact.FirstName);
    }
}
Using context As New AdventureWorksEntities
    Dim contacts As ObjectSet(Of Contact) = context.Contacts

    Dim sortedContacts = _
        From contact In contacts _
        Order By contact.LastName, contact.FirstName _
        Select contact

    Console.WriteLine("The list of contacts sorted by last name then by first name:")
    For Each sortedContact As Contact In sortedContacts
        Console.WriteLine(sortedContact.LastName + ", " + sortedContact.FirstName)
    Next
End Using

ThenByDescending

Esempio

Nell'esempio seguente viene usato OrderBy… Descending, equivalente al metodo ThenByDescending, per ordinare un elenco di prodotti dapprima in base al nome e quindi in base al prezzo di listino, dal prezzo massimo al prezzo minimo.

using (AdventureWorksEntities context = new AdventureWorksEntities())
{
    IQueryable<Product> query =
        from product in context.Products
        orderby product.Name, product.ListPrice descending
        select product;

    foreach (Product product in query)
    {
        Console.WriteLine("Product ID: {0} Product Name: {1} List Price {2}",
            product.ProductID,
            product.Name,
            product.ListPrice);
    }
}
Using context As New AdventureWorksEntities
    Dim products As ObjectSet(Of Product) = context.Products

    Dim query As IQueryable(Of Product) = _
        From product In products _
        Order By product.Name, product.ListPrice Descending _
        Select product

    For Each prod As Product In query
        Console.WriteLine("Product ID: {0} Product Name: {1} List Price {2}", _
            prod.ProductID, _
            prod.Name, _
            prod.ListPrice)
    Next
End Using

Vedi anche