Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Оператор Average вычисляет среднее значение последовательности числовых значений.
Замечание
Преобразование LINQ to SQL Average целочисленных значений вычисляется как целое число, а не как двойное.
Пример 1
В следующем примере возвращается среднее значение Freight в таблице Orders.
Результаты из примера базы данных Northwind будут иметь значение 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)
Пример 2
В следующем примере возвращается среднее значение цены за единицу всех Products в таблице Products.
Результаты из примера базы данных Northwind будут иметь значение 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)
Пример 3
В следующем примере оператор Average используется для поиска тех Products, чья цена за единицу выше средней цены за единицу в категории, к которой они относятся. Затем в примере отображаются результаты в группах.
Обратите внимание, что в этом примере требуется использовать var ключевое слово в C#, так как тип возвращаемого значения является анонимным.
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
При выполнении этого запроса в примере базы данных Northwind результаты должны выглядеть следующим образом:
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