C#学习笔记 ----LINQ(第11章)

语言集查询(Language Intergrated Query,LINQ)

示例:

private static void LinqQuery()
{
    var query = from r in Formulal.GetChampions()
            where r.Country == "Brazil"
            orderby r.Wins descending
            select r;
    foreach(Racer r in query)
    {
        Console.WriteLine("{0:A}",r);
    }
}

查询表达式必须以from子句开头,以select 或group 子句结束。在这俩个子句之间,可以使用where、orderby、join、left和其他from子句。

 

定义LINQ扩展方法的一个类是System.Linq名称空间中的Enumerable。

 

在运行期间定义查询表达式时,查询就不会运行。查询会在迭代数据项时运行。

 

LINQ定义的标准查询操作符

Where OfType<TResult> //筛选操作符定义了返回元素的条件。
Select 和 SelectMany //投射操作符用于把对象转换为另一个类型的新对象。
OrderBy、ThenBy、OrderByDescending、ThenByDescending、Reverse //排序操作符改变所返回的元素的顺序
Join、GroupJoin //连接运算符用于合并不直接相关的集合
GroupBy、ToLookup //组合运算符把数据放在组中。
Any、All、Contains //如果元素序列满足指定的条件,量词操作符就返回布尔值
Take、Skip、TakeWhile、SkipWhile //分区操作符返回集合的一个子集。
Distinct、Union、Intersect、Except、Zip Set //操作符返回一个集合。
First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Single、SingleOrDefault //这些元素操作符仅返回一个元素
Count、Sum、Min、Max、Average、Aggregate //聚合操作符计算集合的一个值
ToArray、ToEnumerable、ToList、ToDictionary、Cast<TResult> //这些转换操作符将集合转换为数组:IEnumerable、IList、IDictionary等
Empty、Range、Repeat //这些生成操作符返回一个新集合。

 

.NET 4在System.Linq名称空间上包含一个新类ParallelEnumerable,可以分解查询的工作使其分布在多个线程上。

 

在LINQ to Objects中,扩展方法需要将一个委托类型作为参数,这样就可以将Lambda表达式赋予参数

 

使用Expression<T>类型的一个例子是ADO.NET Entity Framework和LINQ to SQL

 

.NET 4包含几个LINQ提供程序。LINQ提供程序为特定的数据源实现了标准的查询操作符。

你可能感兴趣的:(LINQ)