一、OfType操作符
先看它的签名public static IEnumerable<TResult> OfType<TResult>(this IEnumerable source)根据指定类型筛选IEnumerable的元素,当source为null返回ArgumentNullException
二、Cast强制转换
从Cast的签名就知道它可以返回IEnumerable<T> ,
public static IEnumerable<T> Cast<T>(this IEnumerable source)
但是也要注意,如果被转换的类型中不能被转为T的则会报Invalid-
CastException异常,如果是null的话则为NullReferenceException上面代码改写为:
三、明确的类型定义
定义from中的查询类型,如