Voorbeelden van op methode gebaseerde querysyntaxis: Conversieoperators (LINQ naar DataSet)
De voorbeelden in dit onderwerp laten zien hoe u de ToArraymethoden ToDictionaryen ToList methoden gebruikt om onmiddellijk een query-expressie uit te voeren.
De FillDataSet
methode die in deze voorbeelden wordt gebruikt, wordt opgegeven in Gegevens laden in een DataSet.
In de voorbeelden in dit onderwerp worden de tabellen Contact, Adres, Product, SalesOrderHeader en SalesOrderDetail gebruikt in de voorbeelddatabase AdventureWorks.
In de voorbeelden in dit onderwerp worden de volgende using
/Imports
instructies gebruikt:
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
Zie How to: Create a LINQ to DataSet Project in Visual Studio (Een LINQ maken naar DataSet-project in Visual Studio) voor meer informatie.
ToArray
Opmerking
In dit voorbeeld wordt de ToArray methode gebruikt om onmiddellijk een reeks in een matrix te evalueren.
// 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"));
}
' 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 productsArray = products.AsEnumerable().ToArray()
Dim query = _
From product In productsArray _
Select product _
Order By product.Field(Of Decimal)("ListPrice") Descending
Console.WriteLine("Every price From highest to lowest:")
For Each product In query
Console.WriteLine(product.Field(Of Decimal)("ListPrice"))
Next
ToDictionary
Opmerking
In dit voorbeeld wordt de ToDictionary methode gebruikt om onmiddellijk een reeks en een gerelateerde sleutelexpressie te evalueren in een woordenlijst.
// 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: {0}",
scoreRecordsDict["Top Tube"]["ProductID"]);
' 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 scoreRecordsDict = products.AsEnumerable(). _
ToDictionary(Function(record) record.Field(Of String)("Name"))
Console.WriteLine("Top Tube's ProductID: {0}", _
scoreRecordsDict("Top Tube")("ProductID"))
ToList
Opmerking
In dit voorbeeld wordt de ToList methode gebruikt om onmiddellijk een reeks te evalueren in een List<T>, waarbij T
het type DataRowis.
// 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));
}
' 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 productList = products.AsEnumerable().ToList()
Dim query = _
From product In productList _
Select product _
Order By product.Field(Of String)("Name")
Console.WriteLine("The sorted name list:")
For Each product In query
Console.WriteLine(product.Field(Of String)("Name").ToLower(CultureInfo.InvariantCulture))
Next