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 ...
随机推荐
- Swift2.1 语法指南——析构过程
原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...
- mysql-mysql悲观锁和乐观锁
1.mysql的四种事务隔离级别 I. 对于同时运行多个事务,当这些事务访问数据库中的相同数据时,如果没有采取必要的隔离机制,就会导致各种并发问题. (1)脏读: 对于两个事物 T1, T2, T1 ...
- 线程7-ThreadLocal
有时间再整理 ThreadLocal不是用来解决对象共享访问问题的,而主要是提供了保持对象的方法和避免参数传递的方便的对象访问方式.归纳了两点: 1.每个线程中都有一个自己的ThreadLocalMa ...
- Java网络编程学习
服务器是指提供信息的计算机或程序,客户机是指请求信息的计算机或程序,而网络用于连接服务器与客户机,实现两者相互通信.但有时在某个网络中很难将服务器与客户机区分开.我们通常所说的“局域网”(Local ...
- MySQL Python教程(1)
首先对于数据库的基本操作要有一定基础,其次了解Python的基础语法. 建议先阅读MysqL中文教程http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chap ...
- java中的jComBox的基本用法
jComBox获取选中的字符串 getSelectedItem().toString()返回一个字符串 getSelectedItem()返回一个对象. getSelectedIndex()得到选择值 ...
- PyQt4关闭最大化最小化取消双击最大化
self.setWindowFlags(Qt.Window | Qt.WindowTitleHint | Qt.WindowCloseButtonHint | Qt.CustomizeWindowHi ...
- postgresql 函数&存储过程 ; 递归查询
函数:http://my.oschina.net/Kenyon/blog/108303 紧接上述,补充一下: 输入/输出参数的函数demo(输入作为变量影响sql结果,输出作为结果返回) create ...
- SQL Server 2008 R2 Developer (x86, x64, ia64) – DVD (Chinese-Simplified)
http://blog.sina.com.cn/s/blog_4aedf6370101j9tz.html 1. SQL Server 2008 R2 Developer (x86, x64, ia64 ...
- Xcode开发技巧之Code Snippets Library
http://blog.csdn.net/lin1986lin/article/details/21180007 目录(?)[-] 引言 什么是Code Snippets 如何新建Code Snipp ...