Func Delegates(函数 委托)
Func Delegae的声明:
public delegate TR Func<TR>();
public delegate TR Func<T0, TR>(T0 a0);public delegate TR Func<T0, T1, TR>(T0 a0, T1 a1);public delegate TR Func<T0, T1, T2, TR>(T0 a0, T1 a1, T2 a2);public delegate TR Func<T0, T1, T2, T3, TR>(T0 a0, T1 a1, T2 a2, T3 a3);其中,TR代表返回的数据类型,T0,T1,T2,T3代表输入的4个参数。从声明可以看出来,标准查询操作拥有的委托参数不会超过4个。TR返回的是参数列表中的最后一个的类型。
例子:
public static IEnumberable<T> Where<T>(this IEnumberable<T> source,Func<T,bool> predicate);
参数被指定了FUNC<T,bool>,从这里可以知道,predicate方法返回的的类型是bool类型。
标准查询操作 字母交叉引用
会延迟查询的操作:
AsEnumerable
Cast
Concat
DefaultEmpty
Distinct
Empty
Except
GroupBy
GroupJoin
Intersect
Join
ofType
OrderBy
OrderByDescending
Range
Repeat
Reverse
Select
SelectMany
Skip
SkipWhile
Take
TakeWhile
ThenBy
ThenByDescending
Union
Where
两种方式的混合使用
并非所有的场合都可以使用标准查询,可以两种方式混合使用。
例子:
IEnumberable<int> oddNumbers =(
from n in nums where n % 2==1 select n).Reverse();