In diesem Beitrag wird erläutert, wie der Durchschnitt der Werte in einer Liste in C# berechnet wird.
Das Enumerable.Average -Methode ist die kürzeste und idiomatischste Methode, um den Durchschnitt einer Folge numerischer Werte zu berechnen. Das folgende Codebeispiel zeigt den Aufruf dieser Methode:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System; using System.Linq; using System.Collections.Generic; public class Example { public static void Main() { List<int> numbers = new List<int> { 1, 4, 6, 8 }; double average = numbers.Average(); Console.WriteLine("The average is {0}", average); } } |
Ergebnis:
The average is 4.75
Das Enumerable.Average
Methode wirft System.InvalidOperationException
wenn die Quellsequenz leer ist. Sie können die Ausnahme einfach wie folgt behandeln.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System; using System.Linq; using System.Collections.Generic; public class Example { public static void Main() { List<int> numbers = new List<int> { 1, 4, 6, 8 }; double average = numbers.Count > 0 ? numbers.Average() : 0.0; Console.WriteLine("The average is {0}", average); } } |
Ergebnis:
The average is 4.75
Das Enumerable.Average
-Methode verfügt über eine Überladung, die eine Transformationsfunktion annimmt, die auf jedes Element angewendet wird. Es kann verwendet werden, um einen Durchschnitt eines bestimmten Felds aus einer Liste von Objekten zu berechnen, wie unten gezeigt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
using System; using System.Linq; using System.Collections.Generic; public class Person { public string name { get; set; } public int age { get; set; } public Person(string name, int age) { this.name = name; this.age = age; } public override string ToString() { return "[" + name + ", " + age + "]"; } } public class Example { public static void Main() { List<Person> persons = new List<Person> { new Person("x", 27), new Person("y", 20), new Person("z", 24), new Person("z", 30) }; double average = persons.Count > 0 ? persons.Average(item => item.age) : 0.0; Console.WriteLine("The average is {0}", average); } } |
Ergebnis:
The average is 25.25
Die Transformationsfunktion kann auch für jedes Element der Eingabesequenz von String-Werten aufgerufen werden, um den Durchschnitt zu berechnen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System; using System.Linq; using System.Collections.Generic; public class Example { public static void Main() { List<string> numbers = new List<string> { "1", "4", "6", "8" }; double average = numbers.Average(num => int.Parse(num)); Console.WriteLine("The average is {0}", average); } } |
Ergebnis:
The average is 4.75
Das ist alles über die Berechnung des Durchschnitts der Werte in einer Liste in C#.