Teilen über


Zurückgeben des Mittelwertwerts aus einer numerischen Sequenz

Der Average Operator berechnet den Mittelwert einer Sequenz numerischer Werte.

Hinweis

Die LINQ to SQL-Übersetzung von Average von Integer-Werten wird als Integer und nicht als Double berechnet.

Beispiel 1

Im folgenden Beispiel wird der Mittelwert der Freight Werte in der Orders Tabelle zurückgegeben.

Ergebnisse aus der Northwind-Beispieldatenbank wären 78.2442.

System.Nullable<Decimal> averageFreight =
    (from ord in db.Orders
    select ord.Freight)
    .Average();

Console.WriteLine(averageFreight);
Dim averageFreight = Aggregate ord In db.Orders _
                     Into Average(ord.Freight)

Console.WriteLine(averageFreight)

Beispiel 2

Im folgenden Beispiel wird der Mittelwert des Einzelpreises aller Products Elemente in der Products Tabelle zurückgegeben.

Ergebnisse aus der Northwind-Beispieldatenbank wären 28.8663.

System.Nullable<Decimal> averageUnitPrice =
    (from prod in db.Products
    select prod.UnitPrice)
    .Average();

Console.WriteLine(averageUnitPrice);
Dim averageUnitPrice = Aggregate prod In db.Products _
                       Into Average(prod.UnitPrice)

Console.WriteLine(averageUnitPrice)

Beispiel 3

Im folgenden Beispiel wird der Average Operator verwendet, um diejenigen Products zu finden, deren Einzelpreis höher ist als der durchschnittliche Einzelpreis der Kategorie, zu der sie gehört. Im Beispiel werden dann die Ergebnisse in Gruppen angezeigt.

Beachten Sie, dass in diesem Beispiel die Verwendung des var Schlüsselworts in C# erforderlich ist, da der Rückgabetyp anonym ist.

var priceQuery =
    from prod in db.Products
    group prod by prod.CategoryID into grouping
    select new
    {
        grouping.Key,
        ExpensiveProducts =
            from prod2 in grouping
            where prod2.UnitPrice > grouping.Average(prod3 =>
                prod3.UnitPrice)
        select prod2
    };

foreach (var grp in priceQuery)
{
    Console.WriteLine(grp.Key);
    foreach (var listing in grp.ExpensiveProducts)
    {
        Console.WriteLine(listing.ProductName);
    }
}
Dim priceQuery = From prod In db.Products() _
                 Group prod By prod.CategoryID Into grouping = Group _
                 Select CategoryID, _
                 ExpensiveProducts = _
                     (From prod2 In grouping _
                      Where prod2.UnitPrice > _
                     grouping.Average(Function(prod3) _
                     prod3.UnitPrice) _
                      Select prod2)

For Each grp In priceQuery
    Console.WriteLine(grp.CategoryID)
    For Each listing In grp.ExpensiveProducts
        Console.WriteLine(listing.ProductName)
    Next
Next

Wenn Sie diese Abfrage für die Northwind-Beispieldatenbank ausführen, sollten die Ergebnisse wie folgt aussehen:

1

Côte de Blaye

Ipoh Coffee

2

Grandma's Boysenberry Spread

Northwoods Cranberry Sauce

Sirop d'érable

Vegie-spread

3

Sir Rodney's Marmalade

Gumbär Gummibärchen

Schoggi Schokolade

Tarte au sucre

4

Queso Manchego La Pastora

Mascarpone Fabioli

Raclette Courdavault

Camembert Pierrot

Gudbrandsdalsost

Mozzarella di Giovanni

5

Gustaf's Knäckebröd

Gnocchi di nonna Alice

Wimmers gute Semmelknödel

6

Mishi Kobe Niku

Thüringer Rostbratwurst

7

Rössle Sauerkraut

Manjimup Dried Apples

8

Ikura

Carnarvon Tigers

Nord-Ost Matjeshering

Gravad lax

Siehe auch