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. 采用Atlas+Keepalived实现MySQL读写分离、读负载均衡【转载】

      文章 原始出处 :http://sofar.blog.51cto.com/353572/1601552 ============================================== ...

  2. DAY2 Python 标准库 -> Getpass 模块 -> 命令行下输入密码的方法.

    getpass 模块 getpass 模块提供了平台无关的在命令行下输入密码的方法. getpass(prompt) 会显示提示字符串, 关闭键盘的屏幕反馈, 然后读取密码. 如果提示参数省略, 那么 ...

  3. JQuery可见性过滤选择器:hidden无法获取通过visibility:hidden样式隐藏的元素-遁地龙卷风

    1.版本问题 如果你可以获取下列元素 <input type="hidden"/> <div style="display:none"> ...

  4. [codeforces 339]C. Xenia and Weights

    [codeforces 339]C. Xenia and Weights 试题描述 Xenia has a set of weights and pan scales. Each weight has ...

  5. net-snmp5.7.3移植到arm-linux平台

    net-snmp5.7.3移植到arm-linux平台 本次交叉编译在ubuntu 15.04 64位系统下进行. 准备工作 在编译移植前有几项准备工作需要完成. 1下载net-snmp 5.7.3源 ...

  6. CI控制器中设置在其它方法中可用的变量

    开发过程中,某些变量可能需要被控制器中的其它方法所调用,这个变量改怎么设置呢? 其实可以用ci的$this->load->vars($array);和$this->load-> ...

  7. func_num_args, func_get_arg, func_get-args 的区别与用法

    func_num_args 返回传递给函数的参数个数 <?php header("Content-Type: text/html; charset=UTF-8"); func ...

  8. Python 正则表达式:只要整数和小数

    要求用户只能输入数字(包括整数和小数),如何用正则表达式验证用户输入? 有两种思路: 1. 给出正确格式的正则表达式,然后看输入是否合法. 2. 列出所有错误的输入,看输入是否非法. 对于思路1,想想 ...

  9. HTML——meta标签

    <meta> 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. <meta> 标签位于文档的头部,不包含任何内容.&l ...

  10. AngularJS之Provider, Value, Constant, Service, Factory, Decorator的区别与详解

    本文转载自http://camnpr.com/javascript/1693.html 首先,provider, value, constant, service, factory他们都是provid ...