Lamda链接查询、左连接内连接、分组、分页、排序

List<User> userList = new List<User> {

                new User {Id=1,Name="LiBai",Age=20},

                new User {Id=2,Name="DuFu",Age=21},

                new User {Id=3,Name="ZhangSan",Age=22}

            };

            List<Book> bookList = new List<Book> {

            new Book{ Id=1,Name="C",UserId=3},

            new Book{ Id=1,Name="C++",UserId=2}

            };

         //内连接,分页.Skip(0).Take(10);正序排序.OrderBy(x=>x.Id);倒序排列.OrderByDescending(x=>x.Id)

            var joinList = userList.Join(bookList, x => x.Id, y => y.UserId, (x, y) => new { x, y })

                .Select(z => new User

                {

                    Id = z.x.Id,

                    Name = z.x.Name,

                    Age = z.x.Age,

                    Dynasty = z.y.Name

                }).Skip(0).Take(10).OrderBy(x=>x.Id).ToList();

       //左连接①

            var groupList = userList.GroupJoin(bookList, x => x.Id, y => y.UserId, (x, y) => y.DefaultIfEmpty()

            .Select(z => new User

            {

                Id = x.Id,

                Name = x.Name,

                Age = x.Age,

                Dynasty = z == null ? "" : z.Name              

            })).SelectMany(x => x).ToList();

      //左连接②

            var qry = userList.GroupJoin(bookList, foo => foo.Id, bar => bar.UserId, (x, y) => new { Foo = x, Bars = y })

                .SelectMany(x => x.Bars.DefaultIfEmpty(), (x, y) => new { Foo = x.Foo, Bar = y }

               ).Select(z => new User

               {

                   Id = z.Foo.Id,

                   Name = z.Foo.Name,

                   Age = z.Foo.Age,

                   Dynasty = z.Bar == null ? "" : z.Bar.Name

               }).ToList<User>();

注:左连接查询字段赋值时,一定要验证判断右表是否有数据,不然会报找不到数据的错误,内连接无所谓。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值