Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu konudaki örneklerde, yöntem tabanlı sorgu söz dizimi kullanarak GroupBy sorgulamak için yönteminin nasıl kullanılacağı gösterilmektedir. Bu örneklerde kullanılan AdventureWorks Satış Modeli, AdventureWorks örnek veritabanındaki Contact, Address, Product, SalesOrderHeader ve SalesOrderDetail tablolarından oluşturulur.
Bu konudaki örneklerde aşağıdaki using/Imports deyimleri kullanılır:
using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Objects;
using System.Globalization;
using System.Data.EntityClient;
using System.Data.SqlClient;
using System.Data.Common;
Option Explicit On
Option Strict On
Imports System.Data.Objects
Imports System.Globalization
Örnek 1
Aşağıdaki örnek, posta koduna göre gruplandırılmış GroupBy nesneleri döndürmek için Address yöntemini kullanır. Sonuçlar anonim bir türe yansıtılır.
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
var query = context.Addresses
.GroupBy( address => address.PostalCode);
foreach (IGrouping<string, Address> addressGroup in query)
{
Console.WriteLine($"Postal Code: {addressGroup.Key}");
foreach (Address address in addressGroup)
{
Console.WriteLine("\t" + address.AddressLine1 +
address.AddressLine2);
}
}
}
Using context As New AdventureWorksEntities
Dim query = context.Addresses _
.GroupBy(Function(Address) Address.PostalCode) _
.Select(Function(Address) Address)
For Each addressGroup As IGrouping(Of String, Address) In query
Console.WriteLine("Postal Code: {0}", addressGroup.Key)
For Each address As Address In addressGroup
Console.WriteLine(" " + address.AddressLine1 + address.AddressLine2)
Next
Next
End Using
Örnek 2
Aşağıdaki örnekte, kişinin soyadının ilk harfine göre gruplandırılmış GroupBy nesneleri döndürmek için Contact yöntemi kullanılmaktadır. Sonuçlar da soyadının ilk harfine göre sıralanır ve anonim bir türe yansıtılır.
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
var query = context.Contacts
.GroupBy(c => c.LastName.Substring(0,1))
.OrderBy(c => c.Key);
foreach (IGrouping<string, Contact> group in query)
{
Console.WriteLine($"Last names that start with the letter '{group.Key}':");
foreach (Contact contact in group)
{
Console.WriteLine(contact.LastName);
}
}
}
Using context As New AdventureWorksEntities
Dim query = context.Contacts _
.GroupBy(Function(c) c.LastName.Substring(0, 1)) _
.OrderBy(Function(c) c.Key) _
.Select(Function(c) c)
For Each group As IGrouping(Of String, Contact) In query
Console.WriteLine("Last names that start with the letter '{0}':", group.Key)
For Each contact As Contact In group
Console.WriteLine(contact.LastName)
Next
Next
End Using
Örnek 3
Aşağıdaki örnek, müşteri kimliğine göre gruplandırılmış GroupBy nesneleri döndürmek için SalesOrderHeader yöntemini kullanır. Her müşteri için satış sayısı da döndürülür.
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
var query = context.SalesOrderHeaders
.GroupBy(order => order.CustomerID);
foreach (IGrouping<int, SalesOrderHeader> group in query)
{
Console.WriteLine($"Customer ID: {group.Key}");
Console.WriteLine($"Order count: {group.Count()}");
foreach (SalesOrderHeader sale in group)
{
Console.WriteLine($" Sale ID: {sale.SalesOrderID}");
}
Console.WriteLine("");
}
}
Using context As New AdventureWorksEntities
Dim query = context.SalesOrderHeaders _
.GroupBy(Function(order) order.CustomerID)
' Iterate over each IGrouping
For Each group In query
Console.WriteLine("Customer ID: {0}", group.Key)
Console.WriteLine("Order Count: {0}", group.Count)
For Each sale In group
Console.WriteLine(" Sale ID: {0}", sale.SalesOrderID)
Next
Console.WriteLine("")
Next
End Using