`
terryfeng
  • 浏览: 492325 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

LINQ 标准的查询操作符 设置操作符号 两个结果集的 并、交、差、唯一

阅读更多

扩展方法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:

image

分享到:
评论

相关推荐

    linq标准查询操作符

    LINQ标准查询操作符LINQ标准查询操作符LINQ标准查询操作符LINQ标准查询操作符

    LINQ 的标准查询操作符

    语言集成查询 (LINQ) ...除强类型化语法外,LINQ 查询还具有一个标准查询操作符库来增强其功能。这些标准查询操作符对序列进行运算并可执行各种运算,如确定序列中是否存在某个值以及对序列运行合计函数(如求和)。

    LINQ标准查询操作符[收集].pdf

    LINQ标准查询操作符[收集].pdf

    LINQ的标准查询操作符

    语言集成查询(LINQ)允许开发人员通过类型化语法使用Micrisoft.net Framework3.5代码编写类似SQL的查询.....(本资料使用LINQ来执行实际的查询和运算)

    LINQ标准查询操作符(pdf中文版)---通俗易懂

    LINQ标准查询操作符,对linq的扩展方法作了非常详细的描述,配合了,相当好懂的例子。非常不错,我已经看完了,5星推荐。

    LINQ标准查询操作符.pdf

    Linq 查询语法,作者收集的很详细并配有简单的实例。pdf格式

    VB.NET LINQ各项查询操作示例

    这是accessoft上,作者:煮江品茶 写的一个...摘 要:【VB.NET小品】LINQ标准操作符示例 正 文: LINQ是VS中的一个通用的数据查询技术,该技术简化了对SQL、XML等数据的查询。本示例介绍LINQ的标准查询符的使用方法。

    LINQ 标准查询操作符

    本文介绍了LINQ标准查询操作符。没有这些操作符,LINQ就不会存在。本文为理解这些操作符的功能提供了很好的基础。了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰富的功能。

    Linq操作符27个常用说明.docx

    Linq操作符27个常用说明,对Linq to OBJECT进行了详细说明,包括Where,Select,SelectMany,Take,TakeWhile,Skip,SkipWhile,Concat,OrderBy,OrderByDescending,ThenBy等

    LinQ(Language Integrated Query)体验

    LINQ定义了一组标准查询操作符用于在所有基于.NET平台的编程语言中更加直接地声明跨越、过滤和投射操作的统一方式,标准查询操作符允许查询作用于所有基于IEnumerable接口的源,并且它还允许适合于目标域或技术的第...

    LINQ简要技术~~~

    LINQ简要技术 目录 第Ⅰ部分 LINQ到对象 1 第1章 LINQ到对象简介 1 ...第6章 LINQ到数据集操作符 17 6.1. 示例中使用的公共代码 17 6.2. 数据行集合操作符 17 6.3. 数据行字段操作符 17 6.4. 数据表操作符 18

    LINQ 实战 7/11

    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系列全操作 .NETFROMWORK3.5 独有的linq系列

    LINQ不但提供了基本查询表达式,而且还提供了数十个查询操作,如筛选操作、投影操作、集合操作、聚合操作等。通过这些操作,用户更加方便、快捷操作序列,并对序列实现筛选、投影、排序、聚合、联接等功能。本章节...

    linq 简单查询,分页

    linq简单查询,可实现分页,linq to sql

    linq 简单查询示例

    linq 简单查询示例,union,select,from,where,contact

    Linq学习例子

    LINQ定义了一组标准查询操作符用于在所有基于.NET平台的编程语言中更加直接地声明跨越、过滤和投射操作的统一方式,标准查询操作符允许查询作用于所有基于IEnumerable接口的源,并且它还允许适合于目标域或技术的第...

    LINQ查询语句与查询方法

    C#是一种通用的编程语言,由微软公司开发和推出,并广泛应用于Windows操作系统和.NET Framework开发中。它是一种面向对象的语言...LINQ提供了丰富的查询操作符和方法,如Where、OrderBy、GroupBy、Select等,可以.....

    Linq两个List集合取交集的实现

    您可能感兴趣的文章:C#中Linq查询基本操作使用实例c#中LINQ的基本用法实例C# linq查询之动态OrderBy用法实例C#中的Linq Intersect与Except方法使用实例C#中的Linq to Xml详解LINQ 标准查询操作符linq语法基础使用...

Global site tag (gtag.js) - Google Analytics