LINQ基础
LINQ是


- 按照一定的顺序出现
- from子句和select...group子句是必须的
- 其他语句是可选的
- select子句在表达式最后


//这个代码声明了两个类 //第一个代表学生,每个学生都有学生的名字和ID //第二个代表课程,每个课程类都有学生的ID和课程的名字 class Program { public class Student { public int StID; public string LastName; } public class CourseStudent { public string CourseName; public int StID; } //在全局中创建学生类与课程类 //课程类与学生类中有一样的ID static Student[] students =newStudent[]{ ,LastName="Carson"}, ,LastName="Klassen"}, ,LastName="Fleming"}, }; static CourseStudent[] studentsInCourses =new CourseStuden t[]{ }, }, }, }, }, }; static void Main() { var query =from s in students//开始查询,在一个集合内查询 join c in studentsInCourses on s.StID equals c.StID //而这个集合是,由两个集合的部分组成,上面的意思是: //定义students的迭代变量a //定义studentsInCourses迭代变量c //联结这连个集合中的成员,并生成新的一个集合 //联结结果是:把两个集合成员具有相同StID的拿出来组成一个新的集合 where c.CourseName=="History" //找出新集合中CourseName== "History"的成员 select s.LastName; //把这些成员的LastName返回 foreach(var q in query) Console.WriteLine("Student taking History: {0}", q); Console.ReadKey(); } }

class Program { static void Main() { ,,,}; ,,,}; var someInts =from a in groupA//必须的第一个from语句 from b in groupB//主句中的from语句 select new{ a, b, sum=a+b };//创建一个匿名类型 foreach(var a in someInts ) Console.WriteLine( a );//很神奇,"a=","b="自动写了 } }

class Program { static void Main() { ,,,}; ,,,}; var someInts =from a in groupA from b in groupB let sum = a + b select new{ a, b, sum }; foreach(var a in someInts ) Console.WriteLine( a ); } }

static void Main() { ,,}; ,,,}; var someInts =from int a in groupA from int b in groupB let sum = a + b select new{ a, b, sum }; foreach(var a in someInts ) Console.WriteLine( a ); }

classProgram { static void Main() { var students =new[] { ,Major="History"}, ,Major="CompSci"}, ,Major="History"} }; var query =from student in students orderby student.Age ascending//降序descending select student; foreach(var s in query) { Console.WriteLine("{0}, {1}: {2} - {3}", s.LName, s.FName, s.Age, s.Major); } Console.ReadKey(); } }
classProgram { static void Main() { var students =new[] { ,Major="History"}, ,Major="CompSci"}, ,Major="History"} }; var query =from student in students group student by student.Major; //query是返回的是IEnumerable<IGrouping<键,值>>,所以下面不能直接打印 foreach(var s in query ) { Console.WriteLine("{0}", s.Key);//key是分组键 foreach(var t in s ) Console.WriteLine(" {0}, {1}", t.LName, t.FName); } } }

classProgram { static void Main() { ,,,}; ,,,}; var someInts =from a in groupA join b in groupB on a equals b into groupAandB from c in groupAandB //选中groupA与groupB相同的部分把这部分取名为grupAandB select c; foreach(var a in someInts ) Console.Write("{0} ", a ); } }


LINQ基础的更多相关文章
- [.net 面向对象编程基础] (19) LINQ基础
[.net 面向对象编程基础] (19) LINQ基础 上两节我们介绍了.net的数组.集合和泛型.我们说到,数组是从以前编程语言延伸过来的一种引用类型,采用事先定义长度分配存储区域的方式.而集合是 ...
- LINQ基础概述
介绍LINQ基础之前,首说一下LINQ 的历史和LINQ是什么,然后说一下学习 LINQ要了解的东西和 LINQ基础语法 LINQ 的历史 从语言方面的进化 –委托 –匿名方法 –Lambda表达 ...
- LINQ基础(二)
本文主要介绍LINQ查询操作符 LINQ查询为最常用的操作符定义了一个声明语法.还有许多查询操作符可用于Enumerable类. 下面的例子需要用到LINQ基础(一)(http://www.cnblo ...
- LINQ基础(三)
一.并行LINQ System.Linq名称空间中包含的类ParallelEnumerable可以分解查询的工作,使其分布在多个线程上. 尽管Enumerable类给IEnumerable<T& ...
- Linq基础操作之Select,Where,OrderBy,ThenBy源码分析
Linq基础操作之Select,Where,OrderBy,ThenBy源码分析 二:Select 它是延迟执行.yield有得一拼,因为他们都是生成了一个枚举类. if (source is TSo ...
- Linq基础必备
1.linq基础必备之对象初始化器和匿名类型因果分析 3. 一:对象初始化器 1.就是在new的时候给公共属性赋值的一种方式 2. 在没有初始化器之前的时候,我们是怎么初始化的呢??? 1. 构造 ...
- 20.C#LINQ基础和简单使用(十一章11.1-11.2)
终于看到了第11章,之前虽然也有看过,但没有太仔细,在工作中也偶尔会使用,但不明白其中的原理,那现在就来讲讲LINQ,做一做书虫~~ 首先先了解下LINQ的三个要点: LINQ不能把非常复杂的查询表达 ...
- LINQ之路(1):LINQ基础
本文将从什么是LINQ(What).为什么使用LINQ(Why)以及如何使用LINQ(How)三个方面来进行说明. 1.什么是LINQ LINQ(Language Integrated Query)是 ...
- Linq基础知识小记四之操作EF
1.EF简介 EF之于Linq,EF是一种包含Linq功能对象关系映射技术.EF对数据库架构和我们查询的类型进行更好的解耦,使用EF,我们查询的对象不再是C#类,而是更高层的抽象:Entity Dat ...
- C#3.0新增功能09 LINQ 基础01 语言集成查询
连载目录 [已更新最新开发文章,点击查看详细] 语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称. 数据查询历来都表示为简单的字符串,没有编译时类型检查或 Inte ...
随机推荐
- CSS之全屏背景图
吐槽啦:Yeah 明天就是国庆了o(* ̄▽ ̄*)o!哈哈,提前祝福各位园友国庆快乐.假期愉快.生活美满.天天开心!国庆我要回家一趟,把一些不用的东西带回家,走访一下亲朋好友,在家打几天酱油~~~ 言 ...
- iOS中关于.pch的新建与配置问题
以前版本的Xcode新建一个项目都会自动生成.pch,这个文件的好处是,里面添加的东西会自动添加到每个类中,也就是说我们可以把要用的宏定义,和多个头文件等放到.pch中,这样我们就不需要重复的在每个类 ...
- 在hibernate中使用c3p0数据源
1. jar包 hibernate-release-4.1.8.Final\lib\optional\c3p0 2. 加入配置: <!-- 数据库连接池最大连接数 --> &l ...
- IC卡的逻辑卡号和市民卡卡号
CPU卡,IC卡等的卡号与卡在出厂时的卡号.
- ZigBee HA示例程序分析
ZigBee协议栈中自带的HomeAutomation例程,虽然也是操作灯泡,但是,是通过ZCL来统一处理的,符合HA profile规范,互连互操作性较好.下面就简要分析以下ZCL的使用. 在任务数 ...
- 设置textview背景色为透明
UITextView *textView=[[UITextView alloc]initWithFrame:CGRectMake(20, 40, 150, 170)];//初始化并设置大小 textV ...
- 《Linux系统静态路由和火墙路由》
本篇主要写的是关于静态路由表的添加,和如何让你不能上网的主机通过火墙路由表实现上网的功能. 静态路由表: 要是你的主机是2块网卡,并且做了网卡的绑定,依照我下面的方法是成功不了的,你可以去编辑: # ...
- gcc常用选项
gcc选项: -c 只编译,不链接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件. -std= 指 ...
- 【原】Infragistics.Win.UltraWinGrid.UltraGrid 增加行号
private void ultraGrid1_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayo ...
- ECSHOP订单自动确认
1.运行sql代码,生成数据库 CREATE TABLE `ecs_order_auto_confirm` ( `id` INT() UNSIGNED NOT NULL AUTO_INCREMENT, ...