Практическое руководство. Обработка составных ключей в запросах
Статья
Некоторые операторы могут принимать только один аргумент. Если аргумент должен содержать несколько столбцов базы данных, необходимо создать анонимный тип для представления комбинации столбцов.
Пример 1
В следующем примере показан запрос, который вызывает оператор GroupBy, принимающий только один аргумент key.
C#
var query =
from cust in db.Customers
group cust.ContactName bynew { 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
Пример 2
Та же ситуация возникает в случае соединений, как показано в следующем примере.
C#
var query =
from ord in db.Orders
from prod in db.Products
join det in db.OrderDetails
onnew { ord.OrderID, prod.ProductID } equalsnew { det.OrderID, det.ProductID }
into details
from det in details
selectnew { 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
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.
Узнайте, как создавать запросы языка запросов Kusto (KQL) для объединения и извлечения данных из двух или более таблиц с помощью операторов поиска, join и union.