返回LINQ大全首页
Average()通过Average()
您可以找到序列(例如数组或列表)中元素的平均值。 MSDN
处理小数的类型,如decimal
类型,double
类型,float
等类型的平均值很容易。可以通过调用每种类型的数组或列表Average()来获得平均值。
代码示例:
public static class Program
{
static void Main( string[] args )
{
// 数值
float[] floatNumbers = new float[] { 1.0f, 3.0f, 6.0f };
double[] doubleNumbers = new double[] { 1.0d, 3.0d, 6.0d };
decimal[] decimalNumbers = new decimal[] { 1.0m, 3.0m, 6.0m };
float floatAverage = floatNumbers.Average();
double doubleAverage = doubleNumbers.Average();
decimal decimalAverage = decimalNumbers.Average();
// 输出
System.Console.WriteLine( "floatNumbers:{0}", floatNumbers.Text() );
System.Console.WriteLine( "平均:{0}", floatAverage );
System.Console.WriteLine( "doubleNumbers:{0}", doubleNumbers.Text() );
System.Console.WriteLine( "平均:{0}", doubleAverage );
System.Console.WriteLine( "decimalNumbers:{0}", decimalNumbers.Text() );
System.Console.WriteLine( "平均:{0}", decimalAverage );
System.Console.ReadKey();
}
public static string Text( this IEnumerable i_source )
{
string text = string.Empty;
foreach( var value in i_source )
{
text += string.Format( "[{0}], ", value );
}
return text;
}
} // class Program
floatNumbers:[1], [3], [6],
平均:3.333333
doubleNumbers:[1], [3], [6],
平均:3.33333333333333
decimalNumbers:[1.0], [3.0], [6.0],
平均:3.3333333333333333333333333333
整数类型int
type和long
type可以使用Average()来计算平均值。 但是应注意返回值是double类型,因为平均值通常不能用整数表示。
代码示例:
public static class Program
{
static void Main( string[] args )
{
int[] intNumbers = new int[] { 1, 2, 3, 4 };
long[] longNumbers = new long[] { 1, 2, 3, 4 };
double intAverage = intNumbers.Average();
double longAverage = longNumbers.Average();
System.Console.WriteLine( "intNumbers:{0}", intNumbers.Text() );
System.Console.WriteLine( "平均:{0}", intAverage );
System.Console.WriteLine( "longNumbers:{0}", longNumbers.Text() );
System.Console.WriteLine( "平均:{0}", longAverage );
System.Console.ReadKey();
}
public static string Text( this IEnumerable i_source )
{
string text = string.Empty;
foreach( var value in i_source )
{
text += string.Format( "[{0}], ", value );
}
return text;
}
}
intNumbers:[1], [2], [3], [4],
平均:2.5
longNumbers:[1], [2], [3], [4],
平均:2.5
Average()
还支持可空类型。 代码示例:
public static class Program
{
static void Main( string[] args )
{
int?[] intNumbers = new int?[] { 1, 2, 3, 4, null };
long?[] longNumbers = new long?[] { null, null, null, null, null };
double? intAverage = intNumbers.Average();
double? longAverage = longNumbers.Average();
System.Console.WriteLine( "intNumbers:{0}", intNumbers.Text() );
System.Console.WriteLine( "平均:{0}", intAverage );
System.Console.WriteLine( "longNumbers:{0}", longNumbers.Text() );
System.Console.WriteLine( "平均:{0}", longAverage );
System.Console.ReadKey();
}
public static string Text( this IEnumerable i_source )
{
string text = string.Empty;
foreach( var value in i_source )
{
text += string.Format( "[{0}], ", value );
}
return text;
}
}
intNumbers:[1], [2], [3], [4], ,
平均:2.5
longNumbers:, , , , ,
平均:
也可以利用lambda表达式查询类中的平均数。
public static class Program
{
private class Parameter
{
public string Name { get; set; }
public int Age { get; set; }
public override string ToString()
{
return string.Format( "Name:{0}, Age:{1}", Name, Age );
}
}
static void Main( string[] args )
{
Parameter[] parameters = new Parameter[]
{
new Parameter() { Age = 52, Name = "正一郎" },
new Parameter() { Age = 28, Name = "清次郎" },
new Parameter() { Age = 20, Name = "誠三郎" },
new Parameter() { Age = 18, Name = "征史郎" },
};
double average = parameters.Average( value => value.Age );
System.Console.WriteLine( "parameters:{0}", parameters.Text() );
System.Console.WriteLine( "平均:{0}", average );
System.Console.ReadKey();
}
public static string Text( this IEnumerable i_source )
{
string text = string.Empty;
foreach( var value in i_source )
{
text += string.Format( "[{0}], ", value );
}
return text;
}
}
parameters:[Name:正一郎, Age:52], [Name:清次郎, Age:28], [Name:誠三郎, Age:20],
[Name:征史郎, Age:18],
平均:29.5