Postupy: Spojení pomocí složených klíčů (Průvodce programováním v C#)
Tento příklad ukazuje, jak provádět operace spojení, ve kterých chcete použít více než jeden klíč k definování shoda.To lze provést pomocí složeného klíče.Vytvoření složené klíče jako anonymní typ nebo pojmenované zadaný s hodnotami, které chcete porovnat.Pokud proměnná dotazu bude předán přes hranice metoda, pomocí s názvem typ, který má přednost před Equals a GetHashCode klíče.Názvy vlastností a pořadí, v jakém se objevují, musí být identický každý klíč.
Příklad
Následující příklad demonstruje použití složený klíč připojení dat ze tří tabulek:
var query = from o in db.Orders
from p in db.Products
join d in db.OrderDetails
on new {o.OrderID, p.ProductID} equals new {d.OrderID,
d.ProductID} into details
from d in details
select new {o.OrderID, p.ProductID, d.UnitPrice};
Odvození typu složených klíčů závisí na názvy vlastností klíče a pořadí jejich výskytu.Pokud vlastnosti v posloupnosti zdroje nemají stejné názvy, je třeba přiřadit nové názvy v klíčích.Například pokud Orders tabulky a OrderDetails tabulka každý používá různé názvy sloupců, jejich, složeného klíče nelze vytvořit přiřazením shodných názvů v anonymní typy:
join...on new {Name = o.CustomerName, ID = o.CustID} equals
new {Name = d.CustName, ID = d.CustID }
Složené klíče lze také použít v group klauzule.
Probíhá kompilace kódu
Kompilace a spuštění tohoto kódu, postupujte takto:
Otevřít Postupy: Připojení k databázi Northwind a postupujte podle pokynů pro nastavení projektu a vytvořit připojení databáze.Další informace naleznete v tématu Postupy: Instalace ukázkových databází.
V samples.cs vytvořte nový prázdný metodu, která trvá Northwind vstupní parametr s názvem db (podobně jako jiné metody, které jsou v tomto souboru).Vložte kód z tohoto příkladu do těla metody.
Upravit volat metodu nové z program.cs Main.
Stisknutím klávesy F5 kompilace a spuštění dotazu.
Viz také
Referenční dokumentace
join – klauzule (Referenční dokumentace jazyka C#)
group – klauzule (Referenční dokumentace jazyka C#)