應用場景:指定想要"拿到的資料"
說明:和SQL命令中的Select作用相似,查詢表達是中的Select及所接子句是放在表達是最後並把子句中的變數也就是結果返回回來,延遲。
5.Distinct
說明:篩選字段中不相同的值。用于查询不重复的结果集。生成SQL語法為:SELECT DISTINCT [Age] FROM [Students]
Count
說明:返回集合中的元素各數,返回INT型別:不延遲。產生SQL語法:SELECT COUNT(*) FROM
簡單用法:
例如:計算學生總數
List<Student> students = GetStudentList();
var student = students.Count();
2.帶入條件:
例如:計算年紀大於30的學生總數
List<Student> students = GetStudentList();
var student = students.Count(x=>x.Age>30);
LongCount
說明:返回集合元素各數,返回LONG型別;不延遲,對於元素各數較多的集合可是情況選用LongCount來統計數量,比較精準,生成SQL語法為:SELECT COUNT_BIG(*) FROM
例如:計算學生總數
List<Student> students = GetStudentList();
var student = students.LongCount();
Sum
說明:返回集合中數值型別元素之和,集合應為INT類型;不延遲。生成SQL語法為:SELECT SUM(…) FROM
Min
說明:返回集合中元素的最小值;不延遲,生成SQL語法為:SELECT MIN(…) FROM
MAX
說明:返回集合中元素的最大值;不延遲,生成SQL語法為:SELECT MAX(…) FROM
Average
說明:返回集合中數值類型元素的平均值,集合應為數字型別集合,返為值型別為double;不延遲,生成SQL語法為SELECT AVG(…) FROM
Aggregate
說明:根據輸入的表達式獲取聚合值;不延遲。
1.第一種用法:
public static TSource AggregateTSource( this IEnumerableTSource source, FuncTSource, TSource, TSource func);
func 第一個參數:初始值是元素第一筆資料,並且會是之前元素的回傳結果
func 第二個參數:目前元素資料
func 回傳值:第一個參數最後的結果
反編譯:
public static TSource Aggregate<TSource>(this IEnumerable<TSource> source, Func<TSource, TSource, TSource> func)
{
if (source == null)
{
throw Error.ArgumentNull(“source”);
}
if (func == null)
{
throw Error.ArgumentNull(“func”);
}
using (IEnumerator<TSource> enumerator = source.GetEnumerator())
{
if (!enumerator.MoveNext())
{
throw Error.NoElements();
}
TSource val = enumerator.Current;
while (enumerator.MoveNext())
{
val = func(val, enumerator.Current);
}
return val;
}
}
例如:要計算陣列元素的總和
int[] Source = new int[] { 2, 7, 5, 1, 6, 8, 3 };
Source.Aggregate((total, next) => total + next)
2.第二種用法:
public static TAccumulate AggregateTSource, TAccumulate( this IEnumerableTSource source, TAccumulate seed, FuncTAccumulate, TSource, TAccumulate func);
seed: 初始值(自定義)
Func:彙整資料所做的處理函式
func第一個參數:初始值是seed,並且會是之前元素的回傳結果
func 第二個參數:目前元素資料
func 回傳值:第一個參數最後的結果
反編譯:
public static TAccumulate Aggregate<TSource, TAccumulate>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func)
{
if (source == null)
{
throw Error.ArgumentNull(“source”);
}
if (func == null)
{
throw Error.ArgumentNull(“func”);
}
TAccumulate val = seed;
foreach (TSource item in source)
{
val = func(val, item);
}
return val;
}
例如:將60再加上陣列每一個元素的總和
int[] Source = new int[] { 2, 7, 5, 1, 6, 8, 3 };
Source.Aggregate(60,(total, next) => total + next);
第三種用法:
public static TResult AggregateTSource, TAccumulate, TResult( this IEnumerableTSource source, TAccumulate seed, FuncTAccumulate, TSource, TAccumulate func, FuncTAccumulate, TResult resultSelector);
seed: 初始值(自定義)
Func:彙整資料所做的處理函式
func第一個參數:初始值是seed,並且會是之前元素的回傳結果
func 第二個參數:目前元素資料
func 回傳值:第一個參數最後的結果
第二個Func會將第一個func最後計算的結果當輸入參數
參考資料
鐵人賽文章