Číst v angličtině

Sdílet prostřednictvím


Příklady syntaxe dotazů Method-Based: Seskupování

Příklady v tomto tématu ukazují, jak pomocí metody GroupBy dotazovat AdventureWorks Sales Model pomocí syntaxe dotazů založených na metodách. Model AdventureWorks Sales Model, který se používá v těchto příkladech, je sestaven z tabulek Contact, Address, Product, SalesOrderHeader a SalesOrderDetail v ukázkové databázi AdventureWorks.

Příklady v tomto tématu používají následující příkazy using/Imports:

C#
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;

Příklad 1

Následující příklad používá metodu GroupBy k vrácení Address objektů seskupených podle PSČ. Výsledky se promítnou do anonymního typu.

C#
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);
        }
    }
}

Příklad 2

Následující příklad používá metodu GroupBy k vrácení Contact objektů, které jsou seskupeny prvním písmenem příjmení kontaktu. Výsledky se také seřadí podle prvního písmena příjmení a promítnou do anonymního typu.

C#
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);
        }
    }
}

Příklad 3

Následující příklad používá metodu GroupBy k vrácení SalesOrderHeader objektů seskupených podle ID zákazníka. Vrátí se také počet prodejů pro každého zákazníka.

C#
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("");
    }
}

Viz také