Compartir a través de


Devolver el valor medio de una secuencia numérica

El Average operador calcula el promedio de una secuencia de valores numéricos.

Nota:

La traducción LINQ to SQL de valores Average enteros se calcula como un entero, no como un doble.

Ejemplo 1

En el ejemplo siguiente se devuelve el promedio de Freight valores en la tabla Orders.

Los resultados de la base de datos Northwind de ejemplo serían 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)

Ejemplo 2

En el siguiente ejemplo se devuelve el promedio del precio unitario de todos los Products en la tabla Products.

Los resultados de la base de datos Northwind de ejemplo serían 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)

Ejemplo 3

En el ejemplo siguiente se usa el Average operador para buscar aquellos Products cuyo precio unitario sea mayor que el precio unitario medio de la categoría a la que pertenece. A continuación, en el ejemplo se muestran los resultados en grupos.

Tenga en cuenta que en este ejemplo se requiere el uso de la var palabra clave en C#, ya que el tipo de valor devuelto es anónimo.

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 ejecuta esta consulta en la base de datos de ejemplo Northwind, los resultados deben ser similares a los siguientes:

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

Consulte también