zoukankan      html  css  js  c++  java
  • linq to object使用

       //linq to object
        public class LinqShow
        {
            #region Data Init
            private List<Student> GetStudentList()
            {
                #region 初始化数据
                List<Student> studentList = new List<Student>()
                {
                    new Student()
                    {
                        Id=1,
                        Name="张三",
                        ClassId=6,
                        Age=35
                    },
                    new Student()
                    {
                        Id=1,
                        Name="李四",
                        ClassId=2,
                        Age=23
                    },
                     new Student()
                    {
                        Id=1,
                        Name="王炸",
                        ClassId=2,
                        Age=27
                    },
                     new Student()
                    {
                        Id=1,
                        Name="疯子科学家",
                        ClassId=2,
                        Age=26
                    },
                    new Student()
                    {
                        Id=1,
                        Name="",
                        ClassId=2,
                        Age=25
                    },
                    new Student()
                    {
                        Id=1,
                        Name="王五",
                        ClassId=2,
                        Age=24
                    },
                    new Student()
                    {
                        Id=1,
                        Name="故乡的风",
                        ClassId=2,
                        Age=21
                    },
                     new Student()
                    {
                        Id=1,
                        Name="晴天",
                        ClassId=2,
                        Age=22
                    },
                     new Student()
                    {
                        Id=1,
                        Name="旭光",
                        ClassId=2,
                        Age=34
                    },
                     new Student()
                    {
                        Id=1,
                        Name="oldkwok",
                        ClassId=2,
                        Age=30
                    },
                    new Student()
                    {
                        Id=1,
                        Name="乐儿",
                        ClassId=2,
                        Age=30
                    },
                    new Student()
                    {
                        Id=1,
                        Name="暴风轻语",
                        ClassId=2,
                        Age=30
                    },
                    new Student()
                    {
                        Id=1,
                        Name="一个人的孤单",
                        ClassId=2,
                        Age=28
                    },
                    new Student()
                    {
                        Id=1,
                        Name="小张",
                        ClassId=2,
                        Age=30
                    },
                     new Student()
                    {
                        Id=3,
                        Name="阿亮",
                        ClassId=3,
                        Age=30
                    },
                      new Student()
                    {
                        Id=4,
                        Name="37度",
                        ClassId=4,
                        Age=30
                    }
                      ,
                      new Student()
                    {
                        Id=4,
                        Name="关耳",
                        ClassId=4,
                        Age=30
                    }
                      ,
                      new Student()
                    {
                        Id=4,
                        Name="耳机侠",
                        ClassId=4,
                        Age=30
                    },
                      new Student()
                    {
                        Id=4,
                        Name="Wheat",
                        ClassId=4,
                        Age=30
                    },
                      new Student()
                    {
                        Id=4,
                        Name="Heaven",
                        ClassId=4,
                        Age=22
                    },
                      new Student()
                    {
                        Id=4,
                        Name="等待你的微笑",
                        ClassId=4,
                        Age=23
                    },
                      new Student()
                    {
                        Id=4,
                        Name="",
                        ClassId=4,
                        Age=25
                    },
                      new Student()
                    {
                        Id=4,
                        Name="混无痕",
                        ClassId=4,
                        Age=26
                    },
                      new Student()
                    {
                        Id=4,
                        Name="37度",
                        ClassId=4,
                        Age=28
                    },
                      new Student()
                    {
                        Id=4,
                        Name="新的世界",
                        ClassId=4,
                        Age=30
                    },
                      new Student()
                    {
                        Id=4,
                        Name="Rui",
                        ClassId=4,
                        Age=30
                    },
                      new Student()
                    {
                        Id=4,
                        Name="",
                        ClassId=4,
                        Age=30
                    },
                      new Student()
                    {
                        Id=4,
                        Name="肩膀",
                        ClassId=4,
                        Age=30
                    },
                      new Student()
                    {
                        Id=4,
                        Name="根号三",
                        ClassId=4,
                        Age=30
                    }
                };
                #endregion
                return studentList;
            }
            #endregion
    
            public void Show()
            {
                List<Student> studentList = this.GetStudentList();
    
                #region 投影成一个新的对象
                {
                    var list = studentList.Where<Student>(s => s.Age < 30).Select(s => new
                    {
                        IdName = s.Id + s.Name,
                        ClassName = s.ClassId == 1 ? "一班" : "二班"
                    });
                }
                {
                    var list = from s in studentList
                               where s.Age < 30
                               select new
                               {
                                   IdName = s.Id + s.Name,
                                   ClassName = s.ClassId == 1 ? "一班" : "二班"
                               };
                }
                #endregion
                #region In查询
                {
                    var list = studentList.Where<Student>(s => new int[] { 1, 2, 3 }.Contains(s.ClassId)).Select(s => new
                    {
                        IdName = s.Id + s.Name,
                        ClassName = s.ClassId == 1 ? "一班" : "二班"
                    });
                }
                #endregion
                #region 排序分页
                {
                    var list = studentList.Where<Student>(s => s.Age < 30)//条件过滤
                                     .Select(s => new//投影
                                     {
                                         s.Id,
                                         s.ClassId,
                                         IdName = s.Id + s.Name,
                                         ClassName = s.ClassId == 1 ? "一班" : "二班"
                                     })
                                     .OrderBy(s => s.Id)//排序
                                                        //.ThenBy//2个都生效
                                     .OrderByDescending(s => s.ClassId)//倒排  最后一个生效
                                     .Skip(2)//跳过几条
                                     .Take(3);//获取几条
                }
                #endregion
                #region group by
                {
                    var list = from s in studentList
                               where s.Age < 30
                               group s by s.ClassId into sg
                               select sg;
                    foreach (var data in list)
                    {
                        Console.WriteLine(data.Key);
                        foreach (var item in data)
                        {
                            Console.WriteLine($"{item.Id} {item.Name} {item.Age}");
                        }
                    }
                }
                {
                    var list = from s in studentList
                               where s.Age < 30
                               group s by s.ClassId into sg
                               select new
                               {
                                   key = sg.Key,
                                   maxAge = sg.Max(t => t.Age)
                               };
                    foreach (var item in list)
                    {
                        Console.WriteLine($"key={item.key}  maxAge={item.maxAge}");
                    }
                    //group by new {s.ClassId,s.Age}
                    //group by new {A=s.ClassId>1}
                }
                {
                    var list = studentList.GroupBy(s => s.ClassId).Select(sg => new
                    {
                        key = sg.Key,
                        maxAge = sg.Max(t => t.Age)
                    });
                    //new { s.ClassId, s.Age }
                }
                #endregion
    
                List<Class> classList = new List<Class>()
                    {
                        new Class()
                        {
                            Id=1,
                            ClassName="一班"
                        },
                        new Class()
                        {
                            Id=2,
                            ClassName="二班"
                        },
                        new Class()
                        {
                            Id=3,
                            ClassName="三班"
                        },
                    };
    
                #region 左连接
                {
                    var list = from s in studentList
                               join c in classList on s.ClassId equals c.Id//不能用==只能equals
                               select new
                               {
                                   Name = s.Name,
                                   CalssName = c.ClassName
                               };
                    foreach (var item in list)
                    {
                        Console.WriteLine($"Name={item.Name},CalssName={item.CalssName}");
                    }
                }
                {
                    var list = studentList.Join(classList, s => s.ClassId, c => c.Id, (s, c) => new
                    {
                        Name = s.Name,
                        CalssName = c.ClassName
                    });
                    foreach (var item in list)
                    {
                        Console.WriteLine($"Name={item.Name},CalssName={item.CalssName}");
                    }
                }
                {
                    var list = from s in studentList
                               join c in classList on s.ClassId equals c.Id
                               into scList
                               from sc in scList.DefaultIfEmpty()//
                               select new
                               {
                                   Name = s.Name,
                                   CalssName = sc == null ? "无班级" : sc.ClassName//c变sc,为空则用
                               };
                    foreach (var item in list)
                    {
                        Console.WriteLine($"Name={item.Name},CalssName={item.CalssName}");
                    }
                    Console.WriteLine(list.Count());
                }
                {
                    var list = studentList.Join(classList, s => s.ClassId, c => c.Id, (s, c) => new
                    {
                        Name = s.Name,
                        CalssName = c.ClassName
                    }).DefaultIfEmpty();//为空就没有了
                    foreach (var item in list)
                    {
                        Console.WriteLine($"Name={item.Name},CalssName={item.CalssName}");
                    }
                }
                #endregion
            }
        }
    
    
        /// <summary>
        /// 学生实体
        /// </summary>
        public class Student
        {
            public int Id { get; set; }
            public int ClassId { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
        }
        /// <summary>
        /// 班级实体
        /// </summary>
        public class Class
        {
            public int Id { get; set; }
            public string ClassName { get; set; }
        }
  • 相关阅读:
    树7:给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
    树6:请实现两个函数,分别用来序列化和反序列化二叉树 。
    树5:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
    树3:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的
    树2:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
    树1:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
    3在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
    WPF 利用RichTextBox 打印出不同颜色的文本
    VS生成后,产生roslyn目录
    CancellationTokenSource
  • 原文地址:https://www.cnblogs.com/wangdash/p/11839235.html
Copyright © 2011-2022 走看看