Lambda表达式与标准运算符查询
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表达式与标准运算符查询的更多相关文章
- 动态构建Lambda表达式实现EF动态查询
在使用Entity Framework做数据查询的时候,查询条件往往不是固定的,需要动态查询.可以通过动态构建Lamda表达式来实现动态查询. Lamda表达式 使用Lamda表达式可以很方便的按条件 ...
- EF+lambda表达式 实现LIKE模糊查询
s => s.XianWID.StartsWith(str) 匹配以str开头的 s => s.XianWID.EndsWith(str) 匹配以str结尾的 s => s.Xian ...
- 委托,匿名函数和lambda表达式
很早之前就接触到了委托,但是一直对他用的不是太多,主要是本人是菜鸟,能写的比较高级的代码确实不多,但是最近在看MSDN微软的类库的时候,发现了微软的类库好多都用到了委托,于是决定好好的研究研究,加深一 ...
- Lambda 表达式[MSDN]
Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数.Lambda 表达式对于编写 LINQ 查 ...
- .NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式
开篇:在上一篇中,我们了解了匿名类.匿名方法与扩展方法等所谓的新语法,这一篇我们继续征程,看看系统预定义委托(Action/Func/Predicate)和超爱的Lambda表达式.为了方便码农们,. ...
- Lambda 表达式(C# 编程指南) 微软microsoft官方说明
Visual Studio 2013 其他版本 Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地 ...
- C# IEnumerable,Lambda表达式和 Parallel并行编程的用法
以前一直主要做C++和C方面的项目,对C#不太了解熟悉,但听说不难,也就一直没有在意学习C#方面的知识.今天有个C#项目,需要做些应用的扩展,同时修改一些bug.但看了C#代码,顿时觉得有些不适应了. ...
- (zz)Lambda 表达式(C# 编程指南)
https://msdn.microsoft.com/zh-cn/library/bb397687.aspx Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数.通过使用 lambd ...
- 系统预定义委托与Lambda表达式
NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式 开篇:在上一篇中,我们了解了匿名类.匿名方法与扩展方法等所谓的新语法,这一篇我们继续征程,看看系统预定义委托(Action/Fun ...
随机推荐
- C#获取文件/字节数组MD5值方法
找了很多,就这个管用,有时间好好研究一番 public static string GetMD5Hash(string fileName) { try { FileStream file = new ...
- 教你搭建SpringSecurity3框架( 更新中、附源码)
源码下载地址:http://pan.baidu.com/s/1qWsgIg0 一.web.xml <?xml version="1.0" encoding="UTF ...
- php curl 实例+详解
直接上实例 <?php //创建一个新cURL资源 $ch = curl_init(); //用于中文等特殊字符的url转码 $aurl = urlencode($address); $url= ...
- u-boot 2011.09 开启debug 调试
以前做过,现在刚才又想不起来了,这个错误非常的严重. 在这里记一下. debug 调试信息的开启在 include/common.h 有如下宏定义: #ifdef DEBUG #define debu ...
- nested exception is java.lang.RuntimeException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'daoSupport': ...
- phpcms图片模型调用组图的问题
phpcms里面有个图片模型,之前一直没有用过,之前用的轮播图是用文章+缩略图+推荐位实现的 今天看了一下图片模型添加内容的地方,和平常的文章相比多了一个组图的地方:
- python thread的join方法解释
python的Thread类中提供了join()方法,使得一个线程可以等待另一个线程执行结束后再继续运行.这个方法还可以设定一个timeout参数,避免无休止的等待.因为两个线程顺序完成,看起来象一个 ...
- POJ 2051
http://poj.org/problem?id=2051 这个题目的大题意思就是给你一些ID,和ID所对应的周期,每隔它所对应的周期,它的任务就会执行,就会输出所对应的ID Register 20 ...
- jsp调用java方法 function taglib
1.新建tld文件: my-functions.tld: <?xml version="1.0" encoding="UTF-8"?> <ta ...
- 79 两个整数集合A和B,求其交集
[本文链接] http://www.cnblogs.com/hellogiser/p/ab-intersect.html [题目] 两个整数集合A和B,求其交集. [分析] 1. 读取整数集合A中 ...