Klauzula agregacji (Visual Basic)
Stosuje się jedną lub więcej funkcji agregujących do kolekcji.
Aggregate element [As type] In collection _
[, element2 [As type2] In collection2, [...]]
[ clause ]
Into expressionList
Części
Termin |
Definicja |
element |
Wymagane.Zmienna służą do iteracji elementów w kolekcji. |
type |
Opcjonalne.Typ element.Jeśli zostanie określony żaden typ, rodzaj element jest wywnioskować z collection. |
collection |
Wymagane.Odnosi się do zbierania, operowania na. |
clause |
Opcjonalne.Jeden lub więcej kwerend klauzule, takie jak Where klauzuli, aby uściślić wynik kwerendy agregującej klauzuli lub klauzul, które mają. |
expressionList |
Wymagane.Jeden lub więcej rozdzielanych przecinkami wyrażeń określających funkcji agregującej, aby zastosować do kolekcji.Alias można zastosować do funkcji agregującej do określenia nazwy Członkowskie dla wyników kwerendy.Jeżeli żaden alias jest podany, jest używana nazwa funkcji agregującej.Przykładami zobacz podrozdział poświęcony funkcji agregujących w dalszej części tego tematu. |
Uwagi
Aggregate Klauzuli można dołączyć funkcje agregujące w kwerendach.Funkcje agregujące przeprowadzają kontrole i obliczenia na zestawie wartości i zwracają pojedynczą wartość.Wartość wyliczona dostęp przy użyciu członkiem typu wyniku kwerendy.The standard aggregate functions that you can use are the All, Any, Average, Count, LongCount, Max, Min, and Sum functions.Funkcje te są znane deweloperzy, którzy są zaznajomieni z kruszywa w języku SQL.Są one opisane w poniższej sekcji tego tematu.
Wynik funkcji agregującej znajduje się w wyniku kwerendy jako pole Typ wyników kwerendy.Można podać alias wynik funkcji agregującej do określenia nazwy członka typu wyniku kwerendy, przechowujące wartości agregacji.Jeżeli żaden alias jest podany, jest używana nazwa funkcji agregującej.
Aggregate Klauzuli można rozpocząć kwerendę, lub mogą być uwzględniane jako dodatkową klauzulą w kwerendzie.Jeśli Aggregate klauzuli rozpoczyna się w kwerendzie, wynikiem jest pojedyncza wartość, która jest wynikiem funkcji agregującej, określone w Into klauzuli.Jeżeli określono więcej niż jedną funkcję agregacji w Into klauzuli, kwerenda zwraca jeden typ z oddzielnych właściwości, aby odwołać się za wynik każdej funkcji agregującej w Into klauzuli.Jeśli Aggregate klauzuli jest uwzględniana jako dodatkową klauzulą w kwerendzie, typ zwracany w kolekcji kwerendy będzie oddzielnych właściwości, aby odwołać się za wynik każdej funkcji agregującej w Into klauzuli.
Funkcje agregujące
Na poniższej liście opisano standardowe funkcje agregujące, które mogą być używane z Aggregate klauzuli.
Funkcja |
Opis |
All |
Zwraca true , gdy wszystkie elementy w kolekcji spełniają określony warunek; w przeciwnym razie zwraca false.Oto przykład: |
Any |
Zwraca true , jeżeli każdy element w kolekcji spełnia określony warunek; w przeciwnym razie zwraca false.Oto przykład: |
Average |
Oblicza średnią wszystkich elementów w kolekcji lub wyrażenie computes dostarczane dla wszystkich elementów w kolekcji.Oto przykład: |
Count |
Zlicza liczbę elementów w kolekcji.Można podać opcjonalny Boolean wyrażenie do policzenia, ile elementów w kolekcji, które spełniają warunek.Oto przykład: |
Group |
Odnosi się do wyników kwerendy, które są zgrupowane w wyniku Group By lub Group Join klauzuli.Group Funkcja jest prawidłowa tylko w Into klauzuli Group By lub Group Join klauzuli.Aby uzyskać dodatkowe informacje i przykłady, zobacz Grupuj według klauzuli (Visual Basic) i Klauzula sprzężenia grupy (Visual Basic). |
LongCount |
Zlicza liczbę elementów w kolekcji.Można podać opcjonalny Boolean wyrażenie do policzenia, ile elementów w kolekcji, które spełniają warunek.Zwraca wynik w postaci Long.Na przykład, zobacz Count funkcję agregacji. |
Max |
Oblicza maksymalną wartość z kolekcji lub oblicza wyrażenie podane dla wszystkich elementów w kolekcji.Oto przykład: |
Min |
Oblicza minimalną wartość z kolekcji lub oblicza wyrażenie podane dla wszystkich elementów w kolekcji.Oto przykład: |
Sum |
Oblicza sumę wszystkich elementów w kolekcji lub oblicza wyrażenie podane dla wszystkich elementów w kolekcji.Oto przykład: |
Przykład
Poniższy przykład kodu pokazuje, jak używać Aggregate klauzuli zastosowanie funkcji agregujących w wyniku kwerendy.
Public Sub AggregateSample()
Dim customers = GetCustomerList()
Dim customerOrderTotal =
From cust In customers
Aggregate order In cust.Orders
Into Sum(order.Total), MaxOrder = Max(order.Total),
MinOrder = Min(order.Total), Avg = Average(order.Total)
For Each customer In customerOrderTotal
Console.WriteLine(customer.cust.CompanyName & vbCrLf &
vbTab & "Sum = " & customer.Sum & vbCrLf &
vbTab & "Min = " & customer.MinOrder & vbCrLf &
vbTab & "Max = " & customer.MaxOrder & vbCrLf &
vbTab & "Avg = " & customer.Avg.ToString("#.##"))
Next
End Sub
Tworzenie zdefiniowanej przez użytkownika funkcji agregujących
W wyrażeniu kwerendy może zawierać własne niestandardowe funkcje agregujące, dodając rozszerzenie metody IEnumerable<T> typu.Następnie można wykonywać swoje metody niestandardowe, obliczeń lub operacji na agregującym Kolekcja, która zawiera odwołanie do funkcji agregującej.Aby uzyskać więcej informacji o metodach rozszerzenie, zobacz Rozszerzenie metody (Visual Basic).
Na przykład poniższy przykład kodu pokazuje niestandardowe funkcja agregująca, która oblicza wartość mediany zbioru liczb.Istnieją dwa przeciążenia Median metodę rozszerzenia.Przeciążenie pierwszy akceptuje jako dane wejściowe, Kolekcja typu IEnumerable(Of Double).Jeśli Median funkcja agregacji zwana jest dla pola kwerendy typu Double, będzie można wywołać tej metody.Drugi przeciążenie z Median metody mogą być przekazywane do dowolnego typu rodzajowego.Rodzajowy przeciążenie z Median metoda zajmuje drugi parametr, który odwołuje się do Func(Of T, Double) wyrażenie lambda projektu wartość dla typu (z kolekcji), jak odpowiadające im wartości typu Double.Przekazuje następnie obliczenia wartość mediany do innych przeciążenie z Median metody.Aby uzyskać więcej informacji na temat wyrażeń lambda, zobacz Wyrażenia lambda (Visual Basic).
Imports System.Runtime.CompilerServices
Module UserDefinedAggregates
' Calculate the median value for a collection of type Double.
<Extension()>
Function Median(ByVal values As IEnumerable(Of Double)) As Double
If values.Count = 0 Then
Throw New InvalidOperationException("Cannot compute median for an empty set.")
End If
Dim sortedList = From number In values
Order By number
Dim medianValue As Double
Dim itemIndex = CInt(Int(sortedList.Count / 2))
If sortedList.Count Mod 2 = 0 Then
' Even number of items in list.
medianValue = ((sortedList(itemIndex) + sortedList(itemIndex - 1)) / 2)
Else
' Odd number of items in list.
medianValue = sortedList(itemIndex)
End If
Return medianValue
End Function
' "Cast" the collection of generic items as type Double and call the
' Median() method to calculate the median value.
<Extension()>
Function Median(Of T)(ByVal values As IEnumerable(Of T),
ByVal selector As Func(Of T, Double)) As Double
Return (From element In values Select selector(element)).Median()
End Function
End Module
Następujący kod dodaje przykład pokazuje próbki kwerend, które wywołują Median funkcję na zbiór typ agregacji Integeri kolekcji typu Double.Kwerendy, która wywołuje Median funkcję w zbiorze typ agregacji Double wywołania przeciążenia z Median metodę, która akceptuje jako dane wejściowe, Kolekcja typu Double.Kwerendy, która wywołuje Median funkcję w zbiorze typ agregacji Integer wywołuje rodzajowy przeciążenie z Median metody.
Module Module1
Sub Main()
Dim numbers1 = {1, 2, 3, 4, 5}
Dim query1 = Aggregate num In numbers1 Into Median(num)
Console.WriteLine("Median = " & query1)
Dim numbers2 = {1.9, 2, 8, 4, 5.7, 6, 7.2, 0}
Dim query2 = Aggregate num In numbers2 Into Median()
Console.WriteLine("Median = " & query2)
End Sub
End Module
Zobacz też
Informacje
Wybierz klauzuli (Visual Basic)
Grupuj według klauzuli (Visual Basic)
Koncepcje
Wprowadzenie do LINQ w języku Visual Basic