.net Lambda表达式与Linq (LINQ TO object)
Linq To Object
public class Student
{
public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } public int ClassId { get; set; }
}
准备学生数据:
List<Student> stus= new List<Student> {
new Student(){Id=,Name="张三1",Age=,ClassId= },
new Student(){Id=,Name="张三2",Age=,ClassId= },
new Student(){Id=,Name="张三3",Age=,ClassId= },
new Student(){Id=,Name="张三4",Age=,ClassId= },
new Student(){Id=,Name="张三5",Age=,ClassId= },
new Student(){Id=,Name="张三6",Age=,ClassId=},
new Student(){Id=,Name="张三7",Age=,ClassId=},
new Student(){Id=,Name="张三8",Age=,ClassId=},
new Student(){Id=,Name="张三9",Age=,ClassId=},
new Student(){Id=,Name="李四",Age=,ClassId= },
new Student(){Id=,Name="李四1",Age=,ClassId= },
new Student(){Id=,Name="李四2",Age=,ClassId= },
new Student(){Id=,Name="李四3",Age=,ClassId= },
new Student(){Id=,Name="李四4",Age=,ClassId= },
new Student(){Id=,Name="李四5",Age=,ClassId= },
new Student(){Id=,Name="李四6",Age=,ClassId= },
new Student(){Id=,Name="李四7",Age=,ClassId= },
new Student(){Id=,Name="李四8",Age=,ClassId= },
new Student(){Id=,Name="王五",Age=,ClassId= },
new Student(){Id=,Name="王五1",Age=,ClassId= },
new Student(){Id=,Name="王五2",Age=,ClassId= },
new Student(){Id=,Name="王五3",Age=,ClassId= },
new Student(){Id=,Name="王五4",Age=,ClassId= },
new Student(){Id=,Name="王五5",Age=,ClassId= },
new Student(){Id=,Name="王五6",Age=,ClassId= },
new Student(){Id=,Name="王五7",Age=,ClassId= }
};
查询班级Id是1的
var list = from s in stus
where s.ClassId ==
select new
{
Name = s.Name,
ClassId = s.ClassId
}; foreach (var item in list)
{
Console.WriteLine(item.Name + "---" + item.ClassId);
} //或者用框架的方法,查询年龄大于30的学生
Console.WriteLine("**********************");
var list1 = stus.Where(s => s.Age > ).Select(s => new { Id = s.Id, Name = s.Name, Age = s.Age });
foreach (var item in list1)
{
Console.WriteLine(item.Id + "---" + item.Name + "--" + item.Age);
}
下面写一个分页的Linq
var list = stus.Where(s => s.Age > )//条件筛选
.Select(s => new //投影
{
Name = s.Name,
Age = s.Age,
ClassId = s.ClassId
}).OrderBy(s => s.Age)//排序
.Skip()//跳过几条
.Take();//获取几条 ,用于分页 foreach (var item in list)
{
Console.WriteLine(item.Name + "--" + item.Age);
}
内连接,准备另外一个班级类
public class ClassInfo
{
public int Id { get; set; } public string ClassName { get; set; }
} List<ClassInfo> classes = new List<ClassInfo>()
{
new ClassInfo(){Id=,ClassName="初级班" },
new ClassInfo(){Id=,ClassName="中级班" },
new ClassInfo(){Id=,ClassName="高级班" },
// new ClassInfo(){Id=4,ClassName="超级班" },
};
var list = from s in stus
join cla in classes
on s.ClassId equals cla.Id select new
{
name = s.Name,
className = cla.ClassName,
age = s.Age
}; foreach (var item in list)
{
Console.WriteLine(item.name+"========"+item.className+"==="+item.age);
}
左外连接
var list1 = from s in stus
join c in classes
on s.ClassId equals c.Id
into slist
from sc in slist.DefaultIfEmpty()
select new
{
name = s.Name,
className = sc== null ? "没有班级":sc.ClassName,
age = s.Age
};
foreach (var item in list1)
{
Console.WriteLine(item.name + "========" + item.className + "===" + item.age);
}
.net Lambda表达式与Linq (LINQ TO object)的更多相关文章
- C#Lambda表达式演变和Linq的深度解析
Lambda 一.Lambda的演变 Lambda的演变,从下面的类中可以看出,.Net Framwork1.0时还是用方法实例化委托的,2.0的时候出现了匿名方法,3.0的时候出现了Lambda. ...
- 思考一个关于Lambda表达式做为linq条件的问题
有一个集合如下 List<User> users = new List<User> { new User{Name = "1",Aget = 12}, ne ...
- LINQ to Objects系列(3)深入理解Lambda表达式
Lambda表达式是学好LINQ很重要的一个知识点,后面的LINQ查询中会大量地使用到Lambda表达式.这篇文章从以下几点进行总结. 1,Lambda表达式的前世今生 2,Lambda表达式的实际运 ...
- 动态LINQ(Lambda表达式)构建
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; us ...
- Lambda 表达式[MSDN]
Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数.Lambda 表达式对于编写 LINQ 查 ...
- 初探Lambda表达式
简单例子 Expression<Func<; 了解Net方法,没有比IL来得更加容易.反编译IL代码如下(截取部分显示) [] <<int32, bool>> ex ...
- C#中的Lambda表达式和表达式树
在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...
- Lambda 表达式(C# 编程指南) 微软microsoft官方说明
Visual Studio 2013 其他版本 Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地 ...
- C# IEnumerable,Lambda表达式和 Parallel并行编程的用法
以前一直主要做C++和C方面的项目,对C#不太了解熟悉,但听说不难,也就一直没有在意学习C#方面的知识.今天有个C#项目,需要做些应用的扩展,同时修改一些bug.但看了C#代码,顿时觉得有些不适应了. ...
- Lambda表达式和表达式树
在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...
随机推荐
- 非正则表达式检验邮箱格式是否合法(Java代码实现)
一.邮箱格式需满足以下要求 1. 有且只有一个@ 2. @不能放在开头,也不能放在结尾 3. @之后必须有. ...
- ELK 架构之 Logstash 和 Filebeat 安装配置
上一篇:ELK 架构之 Elasticsearch 和 Kibana 安装配置 阅读目录: 1. 环境准备 2. 安装 Logstash 3. 配置 Logstash 4. Logstash 采集的日 ...
- java位 、字节 、字符的梳理
1字节(byte)=8位(bit) char=2字节(这是因为char是Java中的保留字,Java用的是Unicode,所以char在Java中是16位即2个字节的.) 附: String str= ...
- left join 后的条件 位置不同,查询的结果不同
表t_a id name 1 a1 2 a2 表t_b a1_id name num 2 b2 1 3 b3 100 left join 后加查询条件 select a.* from t_a a le ...
- Scrapy爬虫框架第八讲【项目实战篇:知乎用户信息抓取】--本文参考静觅博主所写
思路分析: (1)选定起始人(即选择关注数和粉丝数较多的人--大V) (2)获取该大V的个人信息 (3)获取关注列表用户信息 (4)获取粉丝列表用户信息 (5)重复(2)(3)(4)步实现全知乎用户爬 ...
- vue2.0填坑有感(持续更新ing)
1.请求数据 用本地json数据进行mock的时候,一般放在created 过程就Ok了,这样可以尽早获取数据:如果有依赖dom必须存在的清空,就放到mounted里面,具体用法如下所示: // cr ...
- 双层嵌套json字符串(即json对象内嵌json数组)解析为Map
之前我层写过一篇文章,介绍了json与map的相互转化,但当时只涉及到单一的json对象或json数组,对json对象内嵌套这json数组的json字符串无法处理,这篇文章主要解决这个问题. 之前的那 ...
- JAVA经典算法40题(原题+分析)之原题
JAVA经典算法40题(上) [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? [程 ...
- 拯救莫莉斯 状压dp
题目大意:每个点有费用,要求选出花费最少的一些点,使得全部点都满足:他被选或与他相邻的任意点被选. 没看清数据范围233333 和翻格子游戏一样,考虑上中下三行,可行才能转移 f[i][j][k]表示 ...
- BZOJ_2238_Mst_树剖+线段树
BZOJ_2238_Mst_树剖+线段树 Description 给出一个N个点M条边的无向带权图,以及Q个询问,每次询问在图中删掉一条边后图的最小生成树.(各询问间独立,每次询问不对之后的询问产生影 ...