Gewusst wie: Behandeln von zusammengesetzten Schlüsseln in Abfragen (LINQ to SQL)
Aktualisiert: November 2007
Einige Operatoren können nur ein Argument annehmen. Muss Ihr Argument mehrere Datenbankspalten aufnehmen, müssen Sie einen anonymen Typ erstellen, um die Kombination darzustellen.
Beispiel
Das folgende Beispiel zeigt eine Abfrage, die den GroupBy-Operator aufruft. Dieser kann nur ein key-Argument aufnehmen.
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
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);
}
}
Die gleiche Situation betrifft Verknüpfungen wie im folgenden Beispiel:
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
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 };