De gemiddelde waarde van een numerieke reeks retourneren
De Average operator berekent het gemiddelde van een reeks numerieke waarden.
Notitie
De LINQ naar SQL-vertaling van Average
gehele getallen wordt berekend als een geheel getal, niet als een dubbel getal.
Voorbeeld 1
In het volgende voorbeeld wordt het gemiddelde van Freight
waarden in de Orders
tabel geretourneerd.
De resultaten van de northwind-voorbeelddatabase zijn 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)
Voorbeeld 2
In het volgende voorbeeld wordt het gemiddelde van de eenheidsprijs van alle Products
in de Products
tabel geretourneerd.
De resultaten van de northwind-voorbeelddatabase zijn 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)
Voorbeeld 3
In het volgende voorbeeld wordt de operator gebruikt om te bepalen wie Products
de Average
eenheidsprijs hoger is dan de gemiddelde eenheidsprijs van de categorie waartoe deze behoort. In het voorbeeld worden vervolgens de resultaten in groepen weergegeven.
In dit voorbeeld is het gebruik van het var
trefwoord in C# vereist, omdat het retourtype anoniem is.
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
Als u deze query uitvoert op de Northwind-voorbeelddatabase, moeten de resultaten er ongeveer als volgt uitzien:
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