|
|
@ -150,5 +150,232 @@ namespace LinqStudy.Test.LinqToObject
|
|
|
|
Assert.Throws<InvalidOperationException>(act);
|
|
|
|
Assert.Throws<InvalidOperationException>(act);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region Average
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Average:求平均值
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void Average_Default_Test()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
new Person(){ Id=2, Name="小龙女", Age=28},
|
|
|
|
|
|
|
|
new Person(){ Id=4, Name="杨过", Age=32},
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var avgAge = peoples.Average(q => q.Age);
|
|
|
|
|
|
|
|
var expected = (28 + 32) / 2;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assert.True(avgAge - expected < 0.5);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region Count
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Count:序列元素的数量(范围:Int32.MinValue 至 Int32.MaxValue)
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void Count_Default_Test()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
new Person(){ Id=2, Name="小龙女", Age=28},
|
|
|
|
|
|
|
|
new Person(){ Id=4, Name="杨过", Age=32},
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var count = peoples.Count();
|
|
|
|
|
|
|
|
var expected = 2;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(count, expected);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// 重载:predicate
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void Count_predicate_Test()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
new Person(){ Id=2, Name="小龙女", Age=28},
|
|
|
|
|
|
|
|
new Person(){ Id=4, Name="杨过", Age=32},
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var count = peoples.Count(p=>p.Age>28);
|
|
|
|
|
|
|
|
var expected = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(count, expected);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region LongCount
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Count:序列元素的数量(范围超过:Int32.MaxValue),返回长整形。
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void LongCount_Default_Test()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
new Person(){ Id=2, Name="小龙女", Age=28},
|
|
|
|
|
|
|
|
new Person(){ Id=4, Name="杨过", Age=32},
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var count = peoples.LongCount();
|
|
|
|
|
|
|
|
var expected = 2;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(count, expected);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// 重载:predicate
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void LongCount_predicate_Test()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
new Person(){ Id=2, Name="小龙女", Age=28},
|
|
|
|
|
|
|
|
new Person(){ Id=4, Name="杨过", Age=32},
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var count = peoples.LongCount(p => p.Age > 28);
|
|
|
|
|
|
|
|
var expected = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(count, expected);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region Max
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Max:最大值
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void Max_Default_Test()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
new Person(){ Id=1, Name="张三丰", Age=230},
|
|
|
|
|
|
|
|
new Person(){ Id=2, Name="小龙女", Age=28},
|
|
|
|
|
|
|
|
new Person(){ Id=3, Name="银花公主", Age=16},
|
|
|
|
|
|
|
|
new Person(){ Id=4, Name="杨过", Age=32},
|
|
|
|
|
|
|
|
new Person(){ Id=5, Name="东方不败", Age=86},
|
|
|
|
|
|
|
|
new Person(){ Id=6, Name="金轮法王", Age=64},
|
|
|
|
|
|
|
|
new Person(){ Id=7, Name="周伯通", Age=98},
|
|
|
|
|
|
|
|
new Person(){ Id=8, Name="洪七公", Age=97},
|
|
|
|
|
|
|
|
new Person(){ Id=9, Name="郭靖", Age=63},
|
|
|
|
|
|
|
|
new Person(){ Id=10, Name="黄蓉", Age=59},
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var queryMax = peoples.Max(p => p.Age);
|
|
|
|
|
|
|
|
var expectedAge = 230;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(expectedAge, queryMax);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// InvalidOperationException 异常
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void Max_InvalidOperationException_Test()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Action act = () => peoples.Max(p => p.Age);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Throws<InvalidOperationException>(act);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region Min
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Min:最小值
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void Min_Default_Test()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
new Person(){ Id=1, Name="张三丰", Age=230},
|
|
|
|
|
|
|
|
new Person(){ Id=2, Name="小龙女", Age=28},
|
|
|
|
|
|
|
|
new Person(){ Id=3, Name="银花公主", Age=16},
|
|
|
|
|
|
|
|
new Person(){ Id=4, Name="杨过", Age=32},
|
|
|
|
|
|
|
|
new Person(){ Id=5, Name="东方不败", Age=86},
|
|
|
|
|
|
|
|
new Person(){ Id=6, Name="金轮法王", Age=64},
|
|
|
|
|
|
|
|
new Person(){ Id=7, Name="周伯通", Age=98},
|
|
|
|
|
|
|
|
new Person(){ Id=8, Name="洪七公", Age=97},
|
|
|
|
|
|
|
|
new Person(){ Id=9, Name="郭靖", Age=63},
|
|
|
|
|
|
|
|
new Person(){ Id=10, Name="黄蓉", Age=59},
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var queryMin = peoples.Min(p => p.Age);
|
|
|
|
|
|
|
|
var expectedAge = 16;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(expectedAge, queryMin);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// InvalidOperationException 异常
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void Min_InvalidOperationException_Test()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Action act = () => peoples.Min(p => p.Age);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Throws<InvalidOperationException>(act);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region Sum
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Sum:最和
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void Sum_Default_Test()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
new Person(){ Id=2, Name="小龙女", Age=28},
|
|
|
|
|
|
|
|
new Person(){ Id=4, Name="杨过", Age=32},
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var querySum = peoples.Sum(p => p.Age);
|
|
|
|
|
|
|
|
var expectedAge = 60;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(expectedAge, querySum);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// OverflowException 异常
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void Sum_OverflowException_Test()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
new Person(){ Id=2, Name="小龙女", Age=int.MaxValue},
|
|
|
|
|
|
|
|
new Person(){ Id=4, Name="杨过", Age=32},
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Action act = () => peoples.Sum(p => p.Age);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Throws<OverflowException>(act);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|