关联键-索引-查询

    ● First:返回序列中的第一条记录,如果没有记录,则引发异常。

    ● FirstOrDefault:返回序列中的第一条记录,如果没有记录,则返回默认值。

    ● Single:返回序列中的唯一记录,如果没有或返回多条记录,则引发异常。

    ● SingleOrDefault:返回序列中的唯一记录;如果该序列为空,则返回默认值;如果该序列包含多个元素,则引发异常。

 

 

        [HttpPost("Course_Find_Name")]//条件查询 没有对应记录会报错
        public Course Course_Find_Name()
        {
            using (var ctx = new MyDbContext())
            {
                var query = ctx.courses.Single(a=>a.Name=="测试1");
                return query;
            }
        }
        [HttpPost("Course_Find_1")]//条件查询 没有对应记录会报错
        public async Task<IEnumerable<object>>  Course_Find_1()
        {
            using (var ctx = new MyDbContext())
            {
                //var query = ctx.courses.FirstOrDefault(a => a.Name == "测试");//第一,默认值
                //var query = ctx.courses.First(a => a.Name == "测试");//第一,报错
                //报错详情
                //System.InvalidOperationException:“Sequence contains no elements”
                //var query = ctx.courses.Single(a=>a.Name=="测试1");
                //var query = ctx.courses.SingleOrDefault(a => a.Name == "测试1");//唯一,默认值,如果有同名则会报错

                //var query = await ctx.courses.FirstOrDefaultAsync(a => a.Name == "测试1");
                //多数据
                //var query = await  ctx.courses.Where(a => a.Name.Contains("测试1")).ToListAsync();//返回测试1,测试2,测试3
                //var query = await ctx.courses.Where(a => a.Name == "测试1").ToListAsync();

                //两表,一对多
                //内连接  其中一条student没有courseId ,则这条记录不返回
                //var query = from a in ctx.courses
                //            join b in ctx.Students on a.Id equals b.CourseId
                //            select new { course= a.Name,student= b.Name };
                //左连接
                var query = from a in ctx.courses
                            join b in ctx.Students on a.Id equals b.CourseId into studentCourses
                            from sc in studentCourses.DefaultIfEmpty()
                            select new
                            {
                                 StudentName = a.Name,
                               CourseName = sc != null ? sc.Name : "No Course"
                            };
                return await query.ToListAsync();
            }
        }

 

posted @ 2024-05-20 14:26  爱晒太阳的懒猫。。  阅读(3)  评论(0编辑  收藏  举报