hdi*_*ver 3 c# linq iqueryable
这是关于c#的SYNTAX的问题,而不是关于我们如何调用/使用IQueryable的问题
有人可以向我解释一下:
我们有这个声明(System.Linq):
public static double Average<TSource>(this IQueryable<TSource> source,
Expression<Func<TSource, int>> selector)
Run Code Online (Sandbox Code Playgroud)
并致电平均值
double average = fruits.AsQueryable().Average(s => s.Length);
Run Code Online (Sandbox Code Playgroud)
我理解如何调用Average和IQueryable的所有类似的静态方法,但我不理解声明的语法.
public static double Average<TSource>(this IQueryable<TSource> source,
Expression<Func<TSource, int>> selector)
Run Code Online (Sandbox Code Playgroud)
什么是<TSource>平均的Average<TSource>(
,也是this IQueryable<TSource> source.
因为我们调用它时只有一个参数和实际的lambda表达式 (s => s.Length);
提前致谢.
该<TSource>部分声明了该方法的泛型类型参数 - 基本上是序列包含的元素类型.在进入LINQ之前,你一定要理解泛型.
然后,
this IQueryable<TSource> source
Run Code Online (Sandbox Code Playgroud)
表示方法的第一个参数:
this表示它是一种扩展方法IQueryable<TSource> 表示参数的类型source 是参数的名称它是一种扩展方法的事实可能让你感到困惑.你打电话的时候
query.Average(s => s.Length)
Run Code Online (Sandbox Code Playgroud)
由编译器转换为
Queryable.Average(query, s => s.Length)
Run Code Online (Sandbox Code Playgroud)