扩展方法Distinct()两个集合中的每一个列出了一次(唯一)、Union()并、Intersect()交和Except()差都是设置操作。下面创建一个驾驶Ferrari 的一级方程
式冠军序列和驾驶McLaren 的一级方程式冠军序列,然后确定是否有驾驶Ferrari 和McLaren 的冠军(交集)。当然,
这里可以使用Intersect()扩展方法。
首先获得所有驾驶Ferrari 的冠军。这只是一个简单的LINQ 查询,其中使用复合的from 子句访问属性
Cars,返回一个字符串对象序列。
var ferrariDrivers = from r in
Formula1.GetChampions()
from c in r.Cars
where c == "Ferrari"
orderby r.LastName
select r;
现在建立另一个相同的查询,但where 子句的参数不同,以获得所有驾驶McLaren 的冠军。最好不要再
次编写相同的查询。而可以创建一个方法,给它传送参数car:
private static IEnumerable <Racer>
GetRacersByCar(string car)
{
return from r in Formula1.GetChampions()
from c in r.Cars
where c == car
orderby r.LastName
select r;
}
但是,因为该方法不需要在其他地方使用,所以应定义一个委托类型的变量来保存LINQ 查询。
变量racerByCar 必须是一个委托类型,
它需要一个字符串参数(传值的参数),返回IEnumerable <Racer>,类似于前面实现的方法。
为此,定义了带有两个泛型的委托Func<string, IEnumerable<Racer>> ,把一个λ表达式赋予变量racerByCar。
λ表达式的
左边定义了一个car 变量,其类型是Func 委托的第一个泛型参数(字符串)。
右边定义了LINQ 查询,where 子句中会用到car,也就是Lambda的左值
现在可以使用Intersect()扩展方法,获得既驾驶Ferrari 获得冠军,又驾驶McLaren获得冠军的车手,他们的交集 :
private static void Intersect()
{
Func<string, IEnumerable<Racer>> racersByCar =
car => from r in Formula1.GetChampions()//对应,racersByCar("Ferrari"),car 是string 右式是根据car执行的匿名委托,调用的时候,根据Car获得Racer结果的方法
from c in r.Cars
where c == car
orderby r.LastName
select r;
Console.WriteLine("champion with Ferrari and McLaren");
foreach (var racer in racersByCar("Ferrari").Intersect(racersByCar("McLaren")))//返回结果是自身与参数集相交的部分
{
Console.WriteLine(racer);
}
}
结果只有一个赛手Niki Lauda:
分享到:
相关推荐
LINQ标准查询操作符LINQ标准查询操作符LINQ标准查询操作符LINQ标准查询操作符
语言集成查询 (LINQ) ...除强类型化语法外,LINQ 查询还具有一个标准查询操作符库来增强其功能。这些标准查询操作符对序列进行运算并可执行各种运算,如确定序列中是否存在某个值以及对序列运行合计函数(如求和)。
LINQ标准查询操作符[收集].pdf
语言集成查询(LINQ)允许开发人员通过类型化语法使用Micrisoft.net Framework3.5代码编写类似SQL的查询.....(本资料使用LINQ来执行实际的查询和运算)
LINQ标准查询操作符,对linq的扩展方法作了非常详细的描述,配合了,相当好懂的例子。非常不错,我已经看完了,5星推荐。
Linq 查询语法,作者收集的很详细并配有简单的实例。pdf格式
这是accessoft上,作者:煮江品茶 写的一个...摘 要:【VB.NET小品】LINQ标准操作符示例 正 文: LINQ是VS中的一个通用的数据查询技术,该技术简化了对SQL、XML等数据的查询。本示例介绍LINQ的标准查询符的使用方法。
本文介绍了LINQ标准查询操作符。没有这些操作符,LINQ就不会存在。本文为理解这些操作符的功能提供了很好的基础。了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰富的功能。
Linq操作符27个常用说明,对Linq to OBJECT进行了详细说明,包括Where,Select,SelectMany,Take,TakeWhile,Skip,SkipWhile,Concat,OrderBy,OrderByDescending,ThenBy等
LINQ定义了一组标准查询操作符用于在所有基于.NET平台的编程语言中更加直接地声明跨越、过滤和投射操作的统一方式,标准查询操作符允许查询作用于所有基于IEnumerable接口的源,并且它还允许适合于目标域或技术的第...
LINQ简要技术 目录 第Ⅰ部分 LINQ到对象 1 第1章 LINQ到对象简介 1 ...第6章 LINQ到数据集操作符 17 6.1. 示例中使用的公共代码 17 6.2. 数据行集合操作符 17 6.3. 数据行字段操作符 17 6.4. 数据表操作符 18
2.5.2 更多使用LINQ标准查询操作符的例子 50 2.5.3 将扩展方法引入到实例程序中 51 2.5.4 注意事项 52 2.6 匿名类型 54 2.6.1 使用匿名类型组合数据 55 2.6.2 没有名字的类型也是类型 55 2.6.3 使用...
LINQ不但提供了基本查询表达式,而且还提供了数十个查询操作,如筛选操作、投影操作、集合操作、聚合操作等。通过这些操作,用户更加方便、快捷操作序列,并对序列实现筛选、投影、排序、聚合、联接等功能。本章节...
linq简单查询,可实现分页,linq to sql
linq 简单查询示例,union,select,from,where,contact
LINQ定义了一组标准查询操作符用于在所有基于.NET平台的编程语言中更加直接地声明跨越、过滤和投射操作的统一方式,标准查询操作符允许查询作用于所有基于IEnumerable接口的源,并且它还允许适合于目标域或技术的第...
C#是一种通用的编程语言,由微软公司开发和推出,并广泛应用于Windows操作系统和.NET Framework开发中。它是一种面向对象的语言...LINQ提供了丰富的查询操作符和方法,如Where、OrderBy、GroupBy、Select等,可以.....
您可能感兴趣的文章:C#中Linq查询基本操作使用实例c#中LINQ的基本用法实例C# linq查询之动态OrderBy用法实例C#中的Linq Intersect与Except方法使用实例C#中的Linq to Xml详解LINQ 标准查询操作符linq语法基础使用...