Aracılığıyla paylaş


Yöntem Tabanlı Sorgu Söz Dizimi Örnekleri: Sıralama (LINQ to DataSet)

Bu konudaki örneklerde, yöntem sorgusu söz dizimini OrderBykullanarak sonuçları DataSet sorgulamak ve sıralamak için , Reverseve ThenBy yöntemlerinin nasıl kullanılacağı gösterilmektedir.

FillDataSet Bu örneklerde kullanılan yöntem, DataSet'e Veri Yükleme bölümünde belirtilmiştir.

Bu konudaki örneklerde AdventureWorks örnek veritabanındaki Contact, Address, Product, SalesOrderHeader ve SalesOrderDetail tabloları kullanılmıştır.

Bu konudaki örneklerde aşağıdaki using/Imports deyimler kullanılır:

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

Imports System.Linq
Imports System.Linq.Expressions
Imports System.Collections.Generic
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.Common
Imports System.Globalization

Daha fazla bilgi için bkz . Nasıl yapılır: Visual Studio'da LINQ to DataSet Projesi Oluşturma.

OrderBy

Örnek

Bu örnek, OrderBy büyük/küçük harfe duyarsız bir soyad türü yapmak için özel bir karşılaştırıcı ile yöntemini kullanır.

// 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"));
}
' Fill the DataSet.
Dim ds As New DataSet()
ds.Locale = CultureInfo.InvariantCulture
' See the FillDataSet method in the Loading Data Into a DataSet topic.
FillDataSet(ds)

Dim contacts As DataTable = ds.Tables("Contact")

Dim query As IEnumerable(Of DataRow) = _
    contacts.AsEnumerable().OrderBy(Function(contact) _
                contact.Field(Of String)("LastName"), _
                New CaseInsensitiveComparer())

For Each contact As DataRow In query
    Console.WriteLine(contact.Field(Of String)("LastName"))
Next

Ters kaydet

Örnek

Bu örnek, 20 Şubat 2002'den önceki siparişlerin OrderDate listesini oluşturmak için yöntemini kullanırReverse.

// 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"));
}
' Fill the DataSet.
Dim ds As New DataSet()
ds.Locale = CultureInfo.InvariantCulture
' See the FillDataSet method in the Loading Data Into a DataSet topic.
FillDataSet(ds)

Dim orders As DataTable = ds.Tables("SalesOrderHeader")

Dim query = ( _
    From order In orders.AsEnumerable() _
    Where order.Field(Of DateTime)("OrderDate") < New DateTime(2002, 2, 20) _
    Select order).Reverse()

Console.WriteLine("A backwards list of orders where OrderDate < Feb 20, 2002")

For Each order In query
    Console.WriteLine(order.Field(Of DateTime)("OrderDate"))
Next

Thenby

Örnek

Bu örnek, önce liste fiyatına göre sıralamak için özel bir karşılaştırıcı ile ve ThenBy yöntemlerini kullanır OrderBy ve ardından ürün adlarının büyük/küçük harfe duyarlı olmayan azalan bir sıralamasını gerçekleştirir.

// 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: {0} Product Name: {1} List Price {2}",
        product.Field<int>("ProductID"),
        product.Field<string>("Name"),
        product.Field<Decimal>("ListPrice"));
}
' Fill the DataSet.
Dim ds As New DataSet()
ds.Locale = CultureInfo.InvariantCulture
' See the FillDataSet method in the Loading Data Into a DataSet topic.
FillDataSet(ds)

Dim products As DataTable = ds.Tables("Product")

Dim query As IEnumerable(Of DataRow) = _
    products.AsEnumerable().OrderBy(Function(product) product.Field(Of Decimal)("ListPrice")) _
        .ThenBy(Function(product) product.Field(Of String)("Name"), _
                New CaseInsensitiveComparer())

For Each product As DataRow In query
    Console.WriteLine("Product ID: {0} Product Name: {1} List Price {2}", _
        product.Field(Of Integer)("ProductID"), _
        product.Field(Of String)("Name"), _
        product.Field(Of Decimal)("ListPrice"))
Next

Ayrıca bkz.