C# lambda和Linq

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值