class Program
{
static void Main(string[] args)
{
//Lambda表达式输出List集合每一项
List<string> list = new List<string>() { "aaa", "bbb", "ccc", "ddd", "eee" };
list.ForEach(d => Console.WriteLine(d)); //Lambda表达式查找匹配元素
List<A1> a1 = new List<A1>();
a1.Add(new A1 { Id = , Name = "aaa" });
a1.Add(new A1 { Id = , Name = "bbb" });
a1.Add(new A1 { Id = , Name = "ccc" });
a1.Add(new A1 { Id = , Name = "ddd" });
List<A1> list1 = a1.FindAll(d => d.Id > );
//Lambda排序
a1.Sort((x, y) => y.Id - x.Id); //Lambda匹配指定元素到新集合
var s1 = a1.Select(d => new A2() { Name = d.Name });
foreach (var item in s1)
{
Console.WriteLine(item.Name);
} //Lambda演变过程
var gg = new Func<string, int>(delegate(string str) { return str.Length; });
int s = gg("abcde");
var ss = delegate(string str) { return str.Length; };
var qq = (string str) => { return str.Length; };
var ww = (string str) => str.Length;
var ee = str => str.Length;
var bb = new Func<int, int, int>(delegate(int x, int y) { return x + y; });
int cc = bb(,);
Console.ReadKey();
}
}
public class A1
{
public int Id { get; set; }
public string Name { get; set; }
}
public class A2
{
public string Name { get; set; }
}

标准查询运算符-Where-Select-Order-Join

List<A1> a1 = new List<A1>();
a1.Add(new A1 { Id = , Name = "aaa", Age = , Gender = true });
a1.Add(new A1 { Id = , Name = "bbb", Age = , Gender = true });
a1.Add(new A1 { Id = , Name = "ccc", Age = , Gender = false });
a1.Add(new A1 { Id = , Name = "ddd", Age = , Gender = true });
List<DogToy> a2 = new List<DogToy>();
a2.Add(new DogToy { DogId = , DogName = "小白" });
a2.Add(new DogToy { DogId = , DogName = "小欢" });
a2.Add(new DogToy { DogId = , DogName = "小美" });
a2.Add(new DogToy { DogId = , DogName = "小王" });
//Join 连接集合
//返回的结果是一个匿名类集合,程序员可以手动的控制返回集合里使用联合查询
//两个集合里的的哪些属性
var listJoined = a1.Join(a2, d => d.Id, t => t.DogId,
(d, t) => new { DogId = d.Id, DogName = d.Name, ToyName = t.DogName }).ToList();
listJoined.ForEach(d=>Console.WriteLine(d.ToString())); //a1.ForEach(d => { Console.WriteLine(d.ToString()); });
//Where查询
//var aa = a1.Where(d => d.Gender == false);
//链式编程
//var aa = a1.Where(d => d.Gender == false).Select(d => new A2() { Name = d.Name });
//升序排序
//var aa = a1.OrderBy(d => d.Age).ToList();
//升序后再按指定列排序
var aa = a1.OrderBy(d => d.Age).ThenBy(d => d.Id).ToList();
//降序排序
//var aa = a1.OrderByDescending(d => d.Age).ToList();
//aa.ForEach(d => Console.WriteLine(d.ToString()));

标准查询运算符-GroupBy分组

List<A1> a1 = new List<A1>();
a1.Add(new A1 { Id = , Name = "aaa", Age = , Gender = true });
a1.Add(new A1 { Id = , Name = "bbb", Age = , Gender = true });
a1.Add(new A1 { Id = , Name = "ccc", Age = , Gender = false });
a1.Add(new A1 { Id = , Name = "ddd", Age = , Gender = false });
List<DogToy> a2 = new List<DogToy>();
a2.Add(new DogToy { DogId = , DogName = "小白" });
a2.Add(new DogToy { DogId = , DogName = "小欢" });
a2.Add(new DogToy { DogId = , DogName = "小美" });
a2.Add(new DogToy { DogId = , DogName = "小王" });
//Join 连接集合
//返回的结果是一个匿名类集合,程序员可以手动的控制返回集合里使用联合查询
//两个集合里的的哪些属性
var listJoined = a1.Join(a2, d => d.Id, t => t.DogId,
(d, t) => new { DogId = d.Id, DogName = d.Name, ToyName = t.DogName }).ToList();
//遍历输出
listJoined.ForEach(d=>Console.WriteLine(d.ToString())); //GroupBy分组,将姓别分组
var listGroup = a1.GroupBy(d => d.Gender);
foreach (var group in listGroup)
{
//输出小组的分组条件
Console.WriteLine("小组:" + group.Key);
//遍历小组里所有的元素
foreach (var item in group)
{
Console.WriteLine(item.ToString());
}
}
//a1.ForEach(d => { Console.WriteLine(d.ToString()); });
//Where查询
var aa = a1.Where(d => d.Gender == false);
//链式编程
var aa = a1.Where(d => d.Gender == false).Select(d => new A2() { Name = d.Name });
//升序排序
var aa = a1.OrderBy(d => d.Age).ToList();
//升序后再按指定列排序
var aa = a1.OrderBy(d => d.Age).ThenBy(d => d.Id).ToList();
//降序排序
var aa = a1.OrderByDescending(d => d.Age).ToList();
aa.ForEach(d => Console.WriteLine(d.ToString()));

//分页

List<A1> a1 = new List<A1>();
a1.Add(new A1 { Id = , Name = "aaa", Age = , Gender = true });
a1.Add(new A1 { Id = , Name = "bbb", Age = , Gender = true });
a1.Add(new A1 { Id = , Name = "ccc", Age = , Gender = false });
a1.Add(new A1 { Id = , Name = "ddd", Age = , Gender = false });
var list = a1.OrderBy(d => d.Id).ToList();
//分页,Skip(0)跳过0行,Take(2)分两行
//var pageOne = list.Skip(0).Take(2);
var pageOne = list.Skip().Take().ToList();
Console.WriteLine("第一页");
pageOne.ForEach(i => Console.WriteLine(i.ToString()));
var pageTwo = list.Skip().Take().ToList();
Console.WriteLine("第二页");
pageTwo.ForEach(i => Console.WriteLine(i.ToString())); var pageOne1 = GetPagedListByIndex(a1, );
Console.WriteLine("第一页");
pageOne1.ForEach(i => Console.WriteLine(i.ToString())); var pageTwo2 = GetPagedListByIndex(a1, );
Console.WriteLine("第二页");
pageTwo2.ForEach(i => Console.WriteLine(i.ToString()));
Console.ReadKey();
} //分页方法
static List<A1> GetPagedListByIndex(List<A1> groupList, int pageIndex)
{
  int pageSize = ;
  return groupList.Skip((pageIndex - ) * pageSize).Take(pageSize).ToList();
}

Lambda表达式与标准运算符查询的更多相关文章

  1. 动态构建Lambda表达式实现EF动态查询

    在使用Entity Framework做数据查询的时候,查询条件往往不是固定的,需要动态查询.可以通过动态构建Lamda表达式来实现动态查询. Lamda表达式 使用Lamda表达式可以很方便的按条件 ...

  2. EF+lambda表达式 实现LIKE模糊查询

    s => s.XianWID.StartsWith(str) 匹配以str开头的 s => s.XianWID.EndsWith(str) 匹配以str结尾的 s => s.Xian ...

  3. 委托,匿名函数和lambda表达式

    很早之前就接触到了委托,但是一直对他用的不是太多,主要是本人是菜鸟,能写的比较高级的代码确实不多,但是最近在看MSDN微软的类库的时候,发现了微软的类库好多都用到了委托,于是决定好好的研究研究,加深一 ...

  4. Lambda 表达式[MSDN]

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

  5. .NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式

    开篇:在上一篇中,我们了解了匿名类.匿名方法与扩展方法等所谓的新语法,这一篇我们继续征程,看看系统预定义委托(Action/Func/Predicate)和超爱的Lambda表达式.为了方便码农们,. ...

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

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

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

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

  8. (zz)Lambda 表达式(C# 编程指南)

    https://msdn.microsoft.com/zh-cn/library/bb397687.aspx Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数.通过使用 lambd ...

  9. 系统预定义委托与Lambda表达式

    NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式   开篇:在上一篇中,我们了解了匿名类.匿名方法与扩展方法等所谓的新语法,这一篇我们继续征程,看看系统预定义委托(Action/Fun ...

随机推荐

  1. mysql explain 中key_len的计算

    今天丁原问我mysql执行计划中的key_len是怎么计算得到的,当时还没有注意,在高性能的那本书讲到过这个值的计算,但是自己看执行计划的时候一直都没有太在意这个值,更不用说深讨这个值的计算了: ke ...

  2. cpu利用率和cpu 队列

    SIP的第四期结束了,因为控制策略的丰富,早先的的压力测试结果已经无法反映在高并发和高压力下SIP的运行状况,因此需要重新作压力测试.跟在测试人员后面做了快一周的压力测试,压力测试的报告也正式出炉,本 ...

  3. window 常用软件

    参考链接: http://www.aiweibang.com/yuedu/721140.html http://www.aiweibang.com/yuedu/145263218.html 1.wox ...

  4. Javascript正则表达式匹配替换

    根据正则表达式的匹配结果将匹配项替换为*function regReplace(reg, str){ var result, //最终输出结果 out, //每次运行正则exec返回的匹配结果. in ...

  5. 总结一下classpath

    今天好好研究了一下Java的classpath,什么是classpath呢?classpath就是我们输入 java xxx 的时候Java执行环境搜索xxx类文件的路径.指定这个路径有两种方式,第一 ...

  6. Java多线程基础知识(三)

    一. 管道输入/输出流 它和其它文件输入/输出流或网络输入/输出流的不同之处,它主要是线程之间的数据传输,而传输的媒介是内存. 管道输入/输出流主要包含四中实现: 1. PipedOutputStre ...

  7. OSGi——面向服务架构规范简述

    OSGi——面向服务架构规范简述 去年我们组要开发一个新的产品,在讨论产品架构路线的时候,美国的架构师向大家征集了架构设计思想(我推荐了SCSF),有一位工程师向他推荐了OSGi.以前我还没有听过OS ...

  8. C++基础知识(1)----文件操作

    参照 小菜鸟上校 的博客 // file operat.cpp : 定义控制台应用程序的入口点. /*上述例子的主要功能是将一个文件的内容复制到另一个文件中, 这个功能主要由一个函数copy来实现.它 ...

  9. Android 异步消息处理机制解析

    Android 中的异步消息处理主要由四个部分组成,Message.Handler.MessageQueue.Looper.下面将会对这四个部分进行一下简要的介绍. 1. Message: Messa ...

  10. COGS 2434 暗之链锁 题解

    [题意] 给出一个有n个点的无向图,其中有n-1条主要边且这些主要边构成一棵树,此外还有m条其他边,求斩断原图的一条主要边和一条其他边使得图不连通的方案数. 注意,即使只斩断主要边就可以使得原图不连通 ...