Zurückgeben des Durchschnittswerts aus einer numerischen Sequenz
Der Average-Operator ermittelt den Durchschnitt aus einer Sequenz numerischer Werte.
Hinweis
Die LINQ to SQL-Übersetzung von Average
ganzzahliger Werte wird als ganze Zahl, nicht als Double berechnet.
Beispiel 1
Im folgenden Beispiel wird der Mittelwert von Freight
-Werten in der Orders
-Tabelle zurückgegeben.
Die Ergebnisse aus der Beispieldatenbank Northwind lauten 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 durchschnittliche Einzelpreis aller Products
in der Products
-Tabelle zurückgegeben.
Die Ergebnisse aus der Beispieldatenbank Northwind lauten 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 jene Products
zu ermitteln, deren Einzelpreis höher als der Durchschnittspreis der entsprechenden Kategorie ist. Anschließend werden die Ergebnisse in Gruppen angezeigt.
Beachten Sie, dass dieses Beispiel in C# die Verwendung des var
-Schlüsselworts erfordert, 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 mit der Beispieldatenbank Northwind ausführen, sehen die Ergebnisse wie folgt aus:
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