Retourner la valeur moyenne d'une séquence numérique
L'opérateur Average calcule la moyenne d'une séquence de valeurs numériques.
Notes
La traduction LINQ to SQL de Average
des valeurs entières est calculée comme un entier, non comme un double.
Exemple 1
L'exemple suivant retourne la moyenne de valeurs Freight
dans la table Orders
.
Les résultats de l'exemple de base de données Northwind seraient 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)
Exemple 2
L'exemple suivant retourne le prix unitaire moyen de tous les produits (Products
) dans la table Products
.
Les résultats de l'exemple de base de données Northwind seraient 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)
Exemple 3
L'exemple suivant utilise l'opérateur Average
pour rechercher ces Products
dont le prix unitaire est plus élevé que le prix unitaire moyen de la catégorie à laquelle il appartient. L'exemple affiche ensuite les résultats par groupes.
Notez que cet exemple requiert l’utilisation du mot clé var
en C#, car le type de retour est anonyme.
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
Si vous exécutez cette requête sur l'exemple de base de données Northwind, les résultats doivent se présenter comme suit :
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