C# lambda和Linq
来源:互联网 发布:本地pubmed数据库 编辑:程序博客网 时间:2024/05/17 07:34
1.Action委托 接收参数 无返回值
#region 8.0.1 Action委托 接收参数 无返回值 public static void C0801Action() { List<int> list = new List<int> { 1, 2, 3, 4, 5 }; //遍历打印 list.ForEach(fe); //利用匿名函数 list.ForEach(delegate (int i) { Console.WriteLine(i.ToString()); }); //利用lambda表达式打印 list.ForEach(i => Console.WriteLine(i)); } private static void fe(int obj) { Console.WriteLine(obj.ToString()); } #endregion
2.Predicate 泛型委托:接收一个参数,返回bool类型
static void C0802Predicate() { var list = GetPigeList(); list.FindAll(c => c.Age > 100); //有多个返回第一个 var pig = list.Find(c => c.Name == "小猪"); }
3.func:接收参数,返回参数,但不固定
static void C0802Func() { var list = GetPigeList(); //list中年龄大于一的猪 list.Where(c => c.Age > 1).ToList().ForEach(i => Console.WriteLine(i.ToString1())); }
4.Comparison返回一个整数,接收两个同类型的参数
#region Comparison<T>返回一个整数,接收两个同类型的参数 static void C0804Comparison() { var list = GetPigeList(); //原始的 list.Sort(Query1); //匿名委托 list.Sort(delegate (Pig p, Pig n) { return n.Age - p.Age; }); //按年龄倒叙排列 list.Sort((p, n) => n.Age - p.Age); list.ForEach(i => Console.WriteLine(i.ToString1())); } static int Query1(Pig p, Pig n) { return n.Age - p.Age; } #endregion
5.SQO方法-标准查询运算符
#region SQO方法-标准查询运算符 static void C0901Where() { var list = GetPigeList(); //age>5||Name="" list.Where(c => c.Age > 5 || c.Name == "小猪").ToList().ForEach(c => Console.WriteLine(c.ToString1())); //FirstOrDefault演示 list.FirstOrDefault(c => c.Age > 5 || c.Name == "小猪"); list.LastOrDefault(c => c.Age > 5 || c.Name == "小猪"); } //对集合进行排序 static void C0902Sort() { var list = GetPigeList(); //正序 list.OrderBy(c => c.Age).ToList().ForEach(i => Console.WriteLine(i.ToString1())); //正序 list.OrderByDescending(c => c.Age).ToList().ForEach(i => Console.WriteLine(i.ToString1())); //根据最后一个排序 list.OrderByDescending(c => c.Age).OrderByDescending(c => c.ID).ToList().ForEach(c => Console.WriteLine(c.ToString1())); //后面的组合排序用ThenBy list.OrderByDescending(c => c.Age).ThenByDescending(c => c.ID).ToList().ForEach(c => Console.WriteLine(c.ToString1())); } //投影方法 static void C0904Select() { var list = GetPigeList(); //将lis中的Name属性的值获取成一个新的集合 List<string> nlist = list.Select(c => c.Name).ToList(); //将lis中的Name和Age属性的值获取成一个新的集合,匿名类 list.Select(c => new { c.Name, c.Age }).ToList().ForEach(c => Console.WriteLine(c.Name + ":" + c.Age)); nlist.ForEach(c => Console.WriteLine(c.ToString())); } #endregion
6.分页方法Skip(skipNum).take(页容量)
static void C0905Page() { int rowCount = 0; C0905ByPage(1, 2, out rowCount); } static List<Pig> C0905ByPage(int pageIndex, int pageSize, out int rowCount) { rowCount = 0; var list = GetPigeList(); rowCount = list.Count(c => c.Age > 5); return list.Where(c => c.Age > 5).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); }
7.链表查询join
static void C0906Join() { var piglist = GetPigeList(); var pigTypeList = GetPigeTypeList(); //查找piglist集合中的Name和ID值同时和Typelist的TName的值作为一个新的匿名类集合返回 piglist.Join(pigTypeList, p => p.TypeID, t => t.TypeID, (p, t) => new { p.ID, p.Name, t.TName }).ToList().ForEach(c => Console.WriteLine(c.ID + ":" + c.Name + ":" + c.TName)); }
8.分组GroupBy
static void C0907GroupBy() { var list = GetPigeList(); //根据TypeID分组 list.GroupBy(c => c.TypeID).ToList().ForEach(c => { //c代表分组以后的每个小组 Console.WriteLine("---分组号" + c.Key); //g代表每个小组c中的pig对象 c.ToList().ForEach(g => Console.WriteLine(g.ToString1())); }); }
9.Linq
static void C1001Where() { var list = GetPigeList(); var nlist1 = (from c in list where c.Age > 5 select c).ToList(); } static void C1002Sort() { var list = GetPigeList(); var orderList = (from c in list orderby c.Age descending select new { c.Name,c.Age}).ToList(); } static void C1003LinqJoin() { var piglist = GetPigeList(); var pigTypeList = GetPigeTypeList(); var nlist = (from c in piglist join t in pigTypeList on c.TypeID equals t.TypeID select new { c.Name, c.ID, t.TName }).ToList(); } static void C1004GroupBy() { var list = GetPigeList(); (from c in list group c by c.TypeID).ToList(); }
准备两个集合,两个类,和一个扩展方法
public static List<Pig> GetPigeList() { return new List<Pig> { new Pig() {TypeID=1,ID=1,Name="八戒",Age=500 }, new Pig() {TypeID=2,ID=2,Name="八戒1",Age=5 }, new Pig() {TypeID=3,ID=3,Name="小猪",Age=1 }, new Pig() {TypeID=2,ID=4,Name="老猪",Age=5}, }; } public static List<PigType> GetPigeTypeList() { return new List<PigType> { new PigType() {TypeID=1,TName="土猪" }, new PigType() {TypeID=2,TName="野猪" }, new PigType() {TypeID=3,TName="家猪" } }; }
public class Pig { public int TypeID { get; set; } public int ID { get; set; } public string Name { get; set; } public int Age { get; set; } } public class PigType { public int TypeID { get; set; } public string TName { get; set; } } public static class ExPig { public static string ToString1(this Pig pig) { return "猪ID:" + pig.ID + " 猪名:" + pig.Name + " 猪龄:" + pig.Age; } }
阅读全文
0 0
- C# lambda和Linq
- Lambda和Linq
- 学习Linq和Lambda
- linq和lambda表达式
- LINQ和Lambda表达式
- 练习学习Linq和Lambda
- SQL、LINQ和Lambda表达式
- SQL、LINQ和Lambda表达式
- 关于LINQ 和lambda表达式
- SQL、LINQ和Lambda表达式
- C# 中使用Linq和Lambda表达式对List<T>进行排序
- ASP.NET MVC 5 (五)c#的lambda表达式、LinQ和Async异步处理
- C# 中使用LINQ和LAMBDA表达式对LIST进行多字段排序
- LINQ语句和Lambda表达式用法
- siverlight linq语句和lambda表达式
- SQL和LINQ,Lambda语法对照图
- LinQ---扩展方法和Lambda表达式
- 初探Linq表达式和lambda表达式
- 登陆验证
- 日文分词工具Mecab用于中文分词
- 动画过渡效果
- 20171029 勇于挑战自己
- 1.netty基本概念
- C# lambda和Linq
- 从现在开始,每周坚持一个java知识点
- Codeforces Round #442 (Div. 2) 题解(877A~F)
- install kinnect senor on ubuntu
- [BZOJ2425][HAOI2010]计数(组合数学)
- ACM中国国家集训队论文集目录(1999-2009)
- Java中getResourceAsStream的用法
- JPEG 推荐的DC和AC系数的huffman(哈夫曼)码表
- 洛谷P1747 好奇怪的游戏(真的很奇怪哦~)