Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Method-Based przykłady składni zapytań: operatory konwersji (LINQ to DataSet)

W przykładach w tym temacie pokazano, jak używać metod ToArray, ToDictionaryi ToList, aby natychmiast wykonać wyrażenie zapytania.

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:

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 Jak utworzyć projekt LINQ to DataSet w programie Visual Studio.

ToArray

Przykład

W tym przykładzie użyto metody ToArray, aby natychmiast ocenić sekwencję w tablicy.

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

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

IEnumerable<DataRow> productsArray = products.AsEnumerable().ToArray();

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

Console.WriteLine("Every price from highest to lowest:");
foreach (DataRow product in query)
{
    Console.WriteLine(product.Field<Decimal>("ListPrice"));
}

ToDictionary

Przykład

W tym przykładzie użyto metody ToDictionary, aby natychmiast ocenić sekwencję i powiązane wyrażenie klucza w słowniku.

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

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

var scoreRecordsDict =
    products.AsEnumerable()
        .Where(rec=>rec.Field<string>("Name") !=null)
        .ToDictionary(record => record.Field<string>("Name"));
Console.WriteLine($"Top Tube's ProductID: {scoreRecordsDict["Top Tube"]["ProductID"]}");

ToList

Przykład

W tym przykładzie użyto metody ToList, aby natychmiast ocenić sekwencję do List<T>, gdzie T jest typu DataRow.

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

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

IEnumerable<DataRow> productList = products.AsEnumerable().ToList();

IEnumerable<DataRow> query =
    from product in productList
    orderby product.Field<string>("Name")
    select product;

Console.WriteLine("The product list, ordered by product name:");
foreach (DataRow product in query)
{
    Console.WriteLine(product.Field<string>("Name").ToLower(CultureInfo.InvariantCulture));
}

Zobacz też