Partage via


Procédure : Gérer les clés composites dans les requêtes

Certains opérateurs ne peuvent prendre qu’un seul argument. Si votre argument doit inclure plusieurs colonnes de la base de données, vous devez créer un type anonyme pour représenter la combinaison.

Exemple 1

L’exemple suivant présente une requête qui appelle l’opérateur GroupBy et qui peut prendre un seul argument key.

        var query =
from cust in db.Customers
group cust.ContactName by new { City = cust.City, Region = cust.Region };

        foreach (var grp in query)
        {
            Console.WriteLine("\nLocation Key: {0}", grp.Key);
            foreach (var listing in grp)
            {
                Console.WriteLine("\t{0}", listing);
            }
        }
Dim query = _
From cust In db.Customers _
Group cust.ContactName By Key = New With {cust.City, cust.Region} _
Into Group

For Each grp In query
    Console.WriteLine("Location Key: {0}", grp.Key)
    For Each listing In grp.Group
        Console.WriteLine(vbTab & "0}", listing)
    Next
Next

Exemple 2

La même situation s'applique aux jointures, comme dans l'exemple suivant :

        var query =
from ord in db.Orders
from prod in db.Products
join det in db.OrderDetails
    on new { ord.OrderID, prod.ProductID } equals new { det.OrderID, det.ProductID }
    into details
from det in details
select new { ord.OrderID, prod.ProductID, det.UnitPrice };
Dim query = From ord In db.Orders, prod In db.Products _
            Join det In db.OrderDetails _
            On New With {ord.OrderID, prod.ProductID} Equals _
            New With {det.OrderID, det.ProductID} _
            Select ord.OrderID, prod.ProductID, det.UnitPrice

Voir aussi