● 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(); } }
标签:Name,courses,ctx,关联,索引,测试,var,query,查询 From: https://www.cnblogs.com/cat-cat/p/18201578