Partager via


Procédure : formuler des projections (LINQ to SQL)

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

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.

Dim nameQuery = From cust In db.Customers _
    Select cust.ContactName
var nameQuery =
    from cust in db.Customers
    select cust.ContactName;

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.

Dim infoQuery = From cust In db.Customers _
    Select cust.ContactName, cust.Phone
var infoQuery =
    from cust in db.Customers
    select new { cust.ContactName, cust.Phone };

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.

Dim info2Query = From emp In db.Employees _
    Select Name = emp.FirstName & " " & emp.LastName, _
Phone = emp.HomePhone
var info2Query =
    from emp in db.Employees
    select new
    {
        Name = emp.FirstName + " " + emp.LastName,
        Phone = emp.HomePhone
    };

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.

Dim specialQuery = From prod In db.Products _
    Select prod.ProductID, HalfPrice = CDec(prod.UnitPrice) / 2
var specialQuery =
    from prod in db.Products
    select new { prod.ProductID, HalfPrice = prod.UnitPrice / 2 };

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.

Dim prodQuery = From prod In db.Products _
Select prod.ProductName, Availability = _
    If(prod.UnitsInStock - prod.UnitsOnOrder < 0, _
    "Out Of Stock", "In Stock")
var prodQuery =
    from prod in db.Products
    select new
    {
        prod.ProductName,
        Availability =
            prod.UnitsInStock - prod.UnitsOnOrder < 0
        ? "Out Of Stock" : "In Stock"
    };

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

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.

Dim contactQuery = _
    From cust In db.Customers _
    Where cust.City = "London" _
    Select cust.ContactName
var contactQuery =
    from cust in db.Customers
    where cust.City == "London"
    select cust.ContactName;

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.

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

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.

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

Voir aussi

Autres ressources

Exemples de requêtes (LINQ to SQL)