标准查询运算符

        /// <summary>
        /// 8.2 标准查询运算符 - Where 查询方法
        /// </summary>
        static void SQOWhere()
        {
            List<C01Dog> list = GetDogList();
            //在集合中 筛选出 青壮年 公狗们
            List<C01Dog> listDog = list.Where(d => d.Gender == true && d.Age > 3 && d.Age < 39).ToList();
            listDog.ForEach(d => Console.WriteLine(d.ToString()));
        }

        /// <summary>
        /// 8.3 标准查询运算符 - Select 投射方法(返回一个 新的集合)
        /// </summary>
        static void SQOSelect()
        {
            List<C01Dog> list = GetDogList();

            List<C02SmallDog> listNew = list.Select(d => new C02SmallDog() { Name = d.Name }).ToList();
        }
        /// <summary>
        /// 8.4 标准查询运算符 - Order 排序方法
        /// </summary>
        static void SQOOrder()
        {
            List<C01Dog> list = GetDogList();
            //8.4.1 升序排列
            //List<C01Dog> listSorted = list.OrderBy(d => d.Age).ToList();
            //8.4.2 降序排列
            //List<C01Dog> listSorted = list.OrderByDescending(d => d.Age).ToList();
            //8.4.3 多条件排序
            //List<C01Dog> listSorted = list.OrderBy(d => d.Age).ThenBy(d => d.ID).ToList();
            //8.4.4 多条件倒序
            List<C01Dog> listSorted = list.OrderBy(d => d.Age).ThenByDescending(d => d.ID).ToList();

            listSorted.ForEach(d => Console.WriteLine(d.ToString()));
        }
        /// <summary>
        /// 8.5 标准查询运算符 - Join 连接集合
        /// </summary>
        static void TestJoin()
        {
            List<C01Dog> listDog = GetDogList();
            List<C02DogToy> listToy = GetDogToyList();

            //把 Dog集合 与 Toy集合 连接生成一个新的集合
            //连接查询                                on d.ID  =    t.DogID
            //返回的结果是一个 匿名类集合,程序员可以手动 的控制 返回集合里 使用 联合查询两个集合 里的 的哪些属性
            var listJoined = listDog.Join(listToy, d => d.ID, t => t.DogID, (d, t) => new { DogId = d.ID, DogName = d.Name, ToyName = t.ToyName }).ToList();

            listJoined.ForEach(a => Console.WriteLine(a.ToString()));

        }
        /// <summary>
        /// 8.6 标准查询运算符 - GroupBy 为集合元素分组
        /// </summary>
        static void SQOGroupBy()
        {
            List<C01Dog> list = GetDogList();
            //按照集合中 狗的 性别 分组
            //IEnumerable<IGrouping<bool, C01Dog>> it = list.GroupBy(d => d.Gender);
            //按照集合中 狗的 姓名 分组
            var it = list.GroupBy(d => d.Name);
            //将 小组迭代器 转成 小组 集合
            IList<IGrouping<string, C01Dog>> listGroup = it.ToList();
            //遍历 小组
            foreach (IGrouping<string, C01Dog> group in listGroup)
            {
                //输出 小组 的 分组条件
                Console.WriteLine("小组:" + group.Key);
                //遍历 小组里 所有的 元素
                foreach (C01Dog item in group)
                {
                    Console.WriteLine(item.ToString());
                }
                Console.WriteLine("-----------------------------------------");
            }
        }
        /// <summary>
        /// 8.7 标准查询运算符 - Skip + Take 分页数据
        /// </summary>
        static void SQOPagedList()
        {
            List<C01Dog> list = GetDogList().OrderBy(d => d.ID).ToList();
            //假设 每页 2行

            //获取第一页 数据
            //var pageOne = list.Skip(0).Take(2);
            var pageOne = GetPagedListByIndex(list, 1);
            Console.WriteLine("第一页 数据:");
            pageOne.ForEach(i => Console.WriteLine(i.ToString()));

            //获取第二页 数据
            //var pageTwo = list.Skip(2).Take(2);
            var pageTwo = GetPagedListByIndex(list, 2);
            Console.WriteLine("第二页 数据:");
            pageTwo.ForEach(i => Console.WriteLine(i.ToString()));
        }
        static List<C01Dog> GetPagedListByIndex(List<C01Dog> list, int pageIndex)
        {
            int pageSize = 2;
            return list.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
        }
原文地址:https://www.cnblogs.com/dotnetmvc/p/3674948.html