Ler em inglês

Partilhar via


Exemplos de sintaxe de expressão de consulta: ordenação (LINQ to DataSet)

Os exemplos neste tópico demonstram como usar os métodos OrderBy, OrderByDescending, Reverse e ThenByDescending para consultar um DataSet e ordenar os resultados usando a sintaxe da expressão de consulta.

O FillDataSet método usado nesses exemplos é especificado em Carregando dados em um DataSet.

Os exemplos neste tópico usam as tabelas Contact, Address, Product, SalesOrderHeader e SalesOrderDetail no banco de dados de exemplo AdventureWorks.

Os exemplos neste tópico usam as seguintes using/Imports instruções:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.Linq;
using System.Windows.Forms;

Para obter mais informações, consulte Como criar um projeto LINQ to DataSet no Visual Studio.

OrdenarPor

Exemplo

Este exemplo usa OrderBy para retornar uma lista de contatos ordenados por sobrenome.

// Fill the DataSet.
DataSet ds = new DataSet();
ds.Locale = CultureInfo.InvariantCulture;
FillDataSet(ds);

DataTable contacts = ds.Tables["Contact"];

IEnumerable<DataRow> query =
    from contact in contacts.AsEnumerable()
    orderby contact.Field<string>("LastName")
    select contact;

Console.WriteLine("The sorted list of last names:");
foreach (DataRow contact in query)
{
    Console.WriteLine(contact.Field<string>("LastName"));
}

Exemplo

Este exemplo usa OrderBy para classificar uma lista de contatos por comprimento de sobrenome.

// Fill the DataSet.
DataSet ds = new DataSet();
ds.Locale = CultureInfo.InvariantCulture;
FillDataSet(ds);

DataTable contacts = ds.Tables["Contact"];

IEnumerable<DataRow> query =
    from contact in contacts.AsEnumerable()
    orderby contact.Field<string>("LastName").Length
    select contact;

Console.WriteLine("The sorted list of last names (by length):");
foreach (DataRow contact in query)
{
    Console.WriteLine(contact.Field<string>("LastName"));
}

OrdenarPorDescendente

Exemplo

Este exemplo usa orderby… descending (Order By … Descending), que é equivalente ao OrderByDescending método, para classificar a lista de preços do mais alto para o mais baixo.

// Fill the DataSet.
DataSet ds = new DataSet();
ds.Locale = CultureInfo.InvariantCulture;
FillDataSet(ds);

DataTable products = ds.Tables["Product"];

IEnumerable<Decimal> query =
    from product in products.AsEnumerable()
    orderby product.Field<Decimal>("ListPrice") descending
    select product.Field<Decimal>("ListPrice");

Console.WriteLine("The list price from highest to lowest:");
foreach (Decimal product in query)
{
    Console.WriteLine(product);
}

Inverter

Exemplo

Este exemplo usa Reverse para criar uma lista de ordens em que OrderDate é anterior a 20 de fevereiro de 2002.

// Fill the DataSet.
DataSet ds = new DataSet();
ds.Locale = CultureInfo.InvariantCulture;
FillDataSet(ds);

DataTable orders = ds.Tables["SalesOrderHeader"];

IEnumerable<DataRow> query = (
    from order in orders.AsEnumerable()
    where order.Field<DateTime>("OrderDate") < new DateTime(2002, 02, 20)
    select order).Reverse();

Console.WriteLine("A backwards list of orders where OrderDate < Feb 20, 2002");
foreach (DataRow order in query)
{
    Console.WriteLine(order.Field<DateTime>("OrderDate"));
}

Em seguida por ordem decrescente

Exemplo

Este exemplo usa OrderBy… Descending, que é equivalente ao ThenByDescending método, para classificar uma lista de produtos, primeiro pelo nome e depois pelo preço de tabela, do mais alto para o mais baixo.

// Fill the DataSet.
DataSet ds = new DataSet();
ds.Locale = CultureInfo.InvariantCulture;
FillDataSet(ds);

DataTable products = ds.Tables["Product"];

IEnumerable<DataRow> query =
    from product in products.AsEnumerable()
    orderby product.Field<string>("Name"),
        product.Field<Decimal>("ListPrice") descending
    select product;

foreach (DataRow product in query)
{
    Console.WriteLine($"Product ID: {product.Field<int>("ProductID")} Product Name: {product.Field<string>("Name")} List Price {product.Field<Decimal>("ListPrice")}");
}

Consulte também