Formuler des projections
Les exemples suivants expliquent comment l’instruction select
dans C# et l’instruction Select
dans Visual Basic peuvent être associées à d’autres fonctionnalités pour former des projections de requête.
Exemple 1
L’exemple suivant utilise la clause Select
dans Visual Basic (clause select
dans C#) pour retourner une séquence de noms de contact pour Customers
.
var nameQuery =
from cust in db.Customers
select cust.ContactName;
Dim nameQuery = From cust In db.Customers _
Select cust.ContactName
Exemple 2
L’exemple suivant utilise la clause Select
dans Visual Basic (clause select
dans C#) et des types anonymes pour retourner une séquence de noms de contact et de numéros de téléphone pour Customers
.
var infoQuery =
from cust in db.Customers
select new { cust.ContactName, cust.Phone };
Dim infoQuery = From cust In db.Customers _
Select cust.ContactName, cust.Phone
Exemple 3
L’exemple suivant utilise la clause Select
dans Visual Basic (clause select
dans C#) et des types anonymes pour retourner une séquence de noms de contact et de numéros de téléphone pour les employés. Les champs FirstName
et LastName
sont combinés en un champ unique (Name
) et le champ HomePhone
est renommé Phone
dans la séquence obtenue.
var info2Query =
from emp in db.Employees
select new
{
Name = emp.FirstName + " " + emp.LastName,
Phone = emp.HomePhone
};
Dim info2Query = From emp In db.Employees _
Select Name = emp.FirstName & " " & emp.LastName, _
Phone = emp.HomePhone
Exemple 4
L’exemple suivant utilise la clause Select
dans Visual Basic (clause select
dans C#) et des types anonymes pour retourner une séquence de tous les ProductID
et une valeur calculée nommée HalfPrice
. Cette valeur correspond à UnitPrice
divisé par 2.
var specialQuery =
from prod in db.Products
select new { prod.ProductID, HalfPrice = prod.UnitPrice / 2 };
Dim specialQuery = From prod In db.Products _
Select prod.ProductID, HalfPrice = CDec(prod.UnitPrice) / 2
Exemple 5
L’exemple suivant utilise la clause Select
dans Visual Basic (clause select
dans C#) et une instruction conditionnelle pour retourner une séquence de noms et de disponibilités de produits.
var prodQuery =
from prod in db.Products
select new
{
prod.ProductName,
Availability =
prod.UnitsInStock - prod.UnitsOnOrder < 0
? "Out Of Stock" : "In Stock"
};
Dim prodQuery = From prod In db.Products _
Select prod.ProductName, Availability = _
If(prod.UnitsInStock - prod.UnitsOnOrder < 0, _
"Out Of Stock", "In Stock")
Exemple 6
L’exemple suivant utilise une clause Select
dans Visual Basic (clause select
dans C#) et un type connu (Name) pour retourner une séquence des noms d’employés.
public class Name
{
public string FirstName = "";
public string LastName = "";
}
void empMethod()
{
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
var empQuery =
from emp in db.Employees
select new Name
{
FirstName = emp.FirstName,
LastName = emp.LastName
};
}
Public Class Name
Public FirstName As String
Public LastName As String
End Class
Dim db As New Northwnd("c:\northwnd.mdf")
Dim empQuery = From emp In db.Employees _
Select New Name With {.FirstName = emp.FirstName, .LastName = _
emp.LastName}
Exemple 7
L’exemple suivant utilise Select
et Where
dans Visual Basic (select
et where
dans C#) pour retourner une séquence filtrée de noms de contact pour les clients de Londres.
var contactQuery =
from cust in db.Customers
where cust.City == "London"
select cust.ContactName;
Dim contactQuery = _
From cust In db.Customers _
Where cust.City = "London" _
Select cust.ContactName
Exemple 8
L’exemple suivant utilise une clause Select
dans Visual Basic (clause select
dans C#) et des types anonymes pour retourner un sous-ensemble spécifique des données concernant les clients.
var custQuery =
from cust in db.Customers
select new
{
cust.CustomerID,
CompanyInfo = new { cust.CompanyName, cust.City, cust.Country },
ContactInfo = new { cust.ContactName, cust.ContactTitle }
};
Dim custQuery = From cust In db.Customers _
Select cust.CustomerID, CompanyInfo = New With {cust.CompanyName, _
cust.City, cust.Country}, ContactInfo = _
New With {cust.ContactName, cust.ContactTitle}
Exemple 9
L'exemple suivant utilise des requêtes imbriquées pour retourner les résultats suivants :
Séquence de toutes les commandes et des
OrderID
correspondants.Sous-séquence des éléments dans la commande pour laquelle il existe une remise.
Montant enregistré si le coût d'expédition n'est pas inclus.
var ordQuery =
from ord in db.Orders
select new
{
ord.OrderID,
DiscountedProducts =
from od in ord.OrderDetails
where od.Discount > 0.0
select od,
FreeShippingDiscount = ord.Freight
};
Dim ordQuery = From ord In db.Orders _
Select ord.OrderID, DiscountedProducts = _
(From od In ord.OrderDetails _
Where od.Discount > 0.0 _
Select od), _
FreeShippingDiscount = ord.Freight