Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Method-Based Przykłady składni zapytań: Sortowanie (LINQ to DataSet)

W przykładach w tym temacie pokazano, jak używać metod OrderBy, Reverse i ThenBy do wykonywania zapytań dotyczących DataSet oraz porządkowania wyników przy użyciu składni zapytania metody.

Metoda FillDataSet używana w tych przykładach jest określona w „Ładowanie danych do zestawu danych”.

W przykładach w tym temacie użyto tabel Contact, Address, Product, SalesOrderHeader i SalesOrderDetail w przykładowej bazie danych AdventureWorks.

W tym temacie przykłady używają następujących instrukcji using/Imports:

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

Aby uzyskać więcej informacji, zobacz How to: Create a LINQ to DataSet Project In Visual Studio (Jak utworzyć projekt LINQ to DataSet w programie Visual Studio).

Sortuj według

Przykład

W tym przykładzie użyto metody OrderBy z niestandardowym porównywaczem do posortowania nazwisk w sposób niewrażliwy na wielkość liter.

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

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

IEnumerable<DataRow> query =
    contacts.AsEnumerable().OrderBy(contact => contact.Field<string>("LastName"),
                                    new CaseInsensitiveComparer());

foreach (DataRow contact in query)
{
    Console.WriteLine(contact.Field<string>("LastName"));
}

Wycofaj

Przykład

W tym przykładzie użyto metody Reverse do utworzenia listy zamówień, gdzie OrderDate jest wcześniejszy niż 20 lutego 2002 r.

C#
// 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"));
}

NastępnieWedług

Przykład

W tym przykładzie użyto metod OrderBy i ThenBy z niestandardowym modułem porównującym, aby najpierw posortować według ceny katalogowej, a następnie posortować nazwy produktów w kolejności malejącej, ignorując wielkość liter.

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

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

IEnumerable<DataRow> query =
    products.AsEnumerable().OrderBy(product => product.Field<Decimal>("ListPrice"))
    .ThenBy(product => product.Field<string>("Name"),
            new CaseInsensitiveComparer());

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")}");
}

Zobacz też


Dodatkowe zasoby

Dokumentacja