LINQ高級查詢方法
一、聚合類
Count(),Max()/Min(),Average()
Count方法:返回集合項的數目,集合中的元素數量
Max/Min方法:求集合中的最大值
或者最小值
Average方法:求集合中所有數據的平均值
Sum方法:求集合的所有數的總和
int[] nums = { 5, 24, 15, 6, 37, 17, 8, 4, 3, 8 };
//總項數
var res = (from item in nums select item).Count();
Console.WriteLine("集合總項數:"+res);
//最大值
var res1 = (from item in nums select item).Max();
Console.WriteLine("集合中最大值爲:"+res1);
//最小值
var res2 = (from item in nums select item).Min();
Console.WriteLine("集合中最小值爲:" + res2);
//平均值
var res3 = (from item in nums select item).Average();
Console.WriteLine("集合的平均值爲:" + res3);
//總和
var res4 = (from item in nums select item).Sum();
Console.WriteLine("集合的總數爲:"+res4);
//第一個項值
var res5 = (from item in nums select item).First();
Console.WriteLine("集合第一個元素值爲:"+res5);
Console.ReadLine();
執行結果:
二、排序類
ThenBy()
ThenBy方法:提供複合排序條件,爲排序方法提供更多的排序字段
var list = stulist3.OrderBy(item => item.StuAge).ThenBy(item=>item.StuName);//先按照年齡從大到小排序,再按照姓名拼音首字符排序
foreach (var item in list)
{
Console.WriteLine(item.StuName);
}
Console.ReadLine();
執行結果:
三、分區類
Take(),TakeWhile(),Skip(),WkipWhile()
Take方法:從集合中的開頭提取指定數量的元素
Skip方法:跳過指定數量的元素,並獲取剩餘數量的元素
TakeWhile方法:只要滿足指定的條件,就會返回序列的元素,然後跳過剩餘的元素
SkipWhile方法:只要滿足指定的條件,就會跳過序列中的元素,然後返回剩餘的元素
Take()案例
int[] numb = {23,5,1,6,3,16,10,2,7,9 };
//Take() 查詢集合前幾項
var list = numb.Take(4);
foreach (var item in list)
{
Console.Write( " "+item);
}
Console.ReadLine();
執行結果:
Skip()案例
int[] numb = {23,5,1,6,3,16,10,2,7,9 };
//Skip() 除前幾項剩餘的項
var list2 = numb.Skip(3);
foreach (var item in list2)
{
Console.Write( " "+item);
}
Console.ReadLine();
執行結果:
TakeWhile()案例
int[] numb = {23,5,1,6,3,16,10,2,7,9 };
// TakeWhile()
var list3 = numb.TakeWhile(item=>item%3!=0);
foreach (var item in list3)
{
Console.Write( " "+item);
}
Console.ReadLine();
執行結果:
SkipWhile()案例
int[] numb = {23,5,1,6,3,16,10,2,7,9 };
// SkipWhile()
var list4 = numb.SkipWhile(item => item % 2 != 0);
foreach (var item in list4)
{
Console.Write( " "+item);
}
Console.ReadLine();
執行結果:
四、集合類
Distinct()
Distinct方法:去掉
集合中的重複元素
int[] list = { 1, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 6, 7, 5, 8, 9 };
var res = list.Distinct();
foreach (var item in res)
{
Console.WriteLine(" "+item);
}
Console.ReadLine();
執行結果:
五、生成類
Range(),Repeat()
Range方法:生成一個整數序列
Repeat方法:生成一個重複項的序列
Range只能產生整數序列
Repeat可以產生泛型序列
所有的查詢方法都存放在System.Linq.Enumerable靜態類中
Ranage()案例
var list1=
Enumerable.Range(1,5);
foreach (var item in list1)
{
Console.Write(" "+item);
}
Console.ReadLine();
執行結果:
var list2 = Enumerable.Repeat(new int[] {1,2,3 },3);
foreach (var item in list2)
{
Console.WriteLine("---------");
foreach (var i in item)
{
Console.WriteLine(" "+i);
}
}
Console.ReadLine();
執行結果: