Lambda表达式,是用来写匿名方法的。
在委托用得比较多,因为委托是传递方法的。
 
定义几个委托:
public delegate void DoNoThing();//无参无返回值
 
public delegate void DoNoThingWithPara(sting name,int age);//有参无返回值
 
public delegate sting DoNoThingWithReturn();//无参有返回值
 
public delegate int DoNoThingWithParaAndReturn(stiing name,int age);//有参有返回值
 
 
实例化委托
 
DoNothing dnt = ()=>{}; //无参无返回值方法
 
DoNoThingWithPara dtwp = (x,y)=>{};//有参无返回值
 
DoNoThingWithReturn dtwr = ()=>"Hello"; //无参有返回值
 
DoNoThingWithParaAndReturn dntwpr = (x,y)=> 123; //有参有返回值
 
 
这就是Lambda表达式的写法,本质就是方法。
 

Linq To Object
准备一个类:学生类student
 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)的更多相关文章

  1. C#Lambda表达式演变和Linq的深度解析

    Lambda 一.Lambda的演变 Lambda的演变,从下面的类中可以看出,.Net Framwork1.0时还是用方法实例化委托的,2.0的时候出现了匿名方法,3.0的时候出现了Lambda. ...

  2. 思考一个关于Lambda表达式做为linq条件的问题

    有一个集合如下 List<User> users = new List<User> { new User{Name = "1",Aget = 12}, ne ...

  3. LINQ to Objects系列(3)深入理解Lambda表达式

    Lambda表达式是学好LINQ很重要的一个知识点,后面的LINQ查询中会大量地使用到Lambda表达式.这篇文章从以下几点进行总结. 1,Lambda表达式的前世今生 2,Lambda表达式的实际运 ...

  4. 动态LINQ(Lambda表达式)构建

    using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; us ...

  5. Lambda 表达式[MSDN]

    Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数.Lambda 表达式对于编写 LINQ 查 ...

  6. 初探Lambda表达式

    简单例子 Expression<Func<; 了解Net方法,没有比IL来得更加容易.反编译IL代码如下(截取部分显示) [] <<int32, bool>> ex ...

  7. C#中的Lambda表达式和表达式树

    在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...

  8. Lambda 表达式(C# 编程指南) 微软microsoft官方说明

    Visual Studio 2013 其他版本 Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地 ...

  9. C# IEnumerable,Lambda表达式和 Parallel并行编程的用法

    以前一直主要做C++和C方面的项目,对C#不太了解熟悉,但听说不难,也就一直没有在意学习C#方面的知识.今天有个C#项目,需要做些应用的扩展,同时修改一些bug.但看了C#代码,顿时觉得有些不适应了. ...

  10. Lambda表达式和表达式树

    在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...

随机推荐

  1. 关于Java的散列桶, 以及附上一个案例-重写map集合

    为速度而散列: SlowMap.java说明了创建一个新的Map并不困难.但正如它的名称SlowMap所示,它不会很快,如果有更好的选择就应该放弃它.它的问题在于对键的查询,键没有按照任何特定的顺序保 ...

  2. 指针超强汇总(谨记优先级:() > [] > *)

    参考:http://blog.chinaunix.net/uid-20120277-id-5760985.html C语言所有复杂的指针声明,都是由各种声明嵌套构成的.如何解读复杂指针声明呢?右左法则 ...

  3. LR测试

    LoadRunner种预测系统行性能负载测试工具通模拟千万用户实施并发负载及实性能监测式确认查找问题LoadRunner能够整企业架构进行测试通使用 LoadRunner企业能限度缩短测试间优化性能加 ...

  4. iPhone越狱

    手机越狱 常用工具:PP越狱助手.盘古越狱.iTunes 如果手机第一次越狱使用pp越狱助手成功率比较高 iPhone固件下载地址http://iphone.91.com/fw/iphone5/ 具体 ...

  5. 26.app后端怎么架设推送服务

    推送服务已经是app的标配了.架设推送服务,除了可以使用第三方服务商外,也有大量的开源技术可以选择. 现在推送主要分两块,android推送和ios推送,在下面分别论述: 1.    Android推 ...

  6. yii2.0 集成/引入第三方sdk

    首先下载自己要使用的sdk包放到vendor文件夹下面:我以接入ping++为例子如下: 然后在入口文件出引入文件的配置文件: 下面就是在控制器使用了: 下面就可以根据自己要使用的的文件以及方法正常调 ...

  7. machine learning 之 Anomaly detection

    自Andrew Ng的machine learning课程. 目录: Problem Motivation Gaussian Distribution Algorithm Developing and ...

  8. 提高测试脚本复用性降低DOM结构引起路径变化的影响

    问题描述 在定位元素时直接复制的xpath. 但是因为下面这些原因导致之前引用的路径失效, 不得不频繁修改脚本重新定位元素, 大降低了脚本的复用性, 也增加了维护的成本: 1. UI修改 (比如增加了 ...

  9. 【树形dp】Bzoj3391 [Usaco2004 Dec]Tree Cutting网络破坏

    Description     约翰意识到贝茜建设网络花费了他巨额的经费,就把她解雇了.贝茜很愤怒,打算狠狠报 复.她打算破坏刚建成的约翰的网络.    约翰的网络是树形的,连接着N(1≤N≤1000 ...

  10. BZOJ_2073_[POI2004]PRZ_状压DP

    BZOJ_2073_[POI2004]PRZ_状压DP 题意: 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍在桥上 ...