diff --git "a/\351\231\210\344\274\237\351\221\253/1204" "b/\351\231\210\344\274\237\351\221\253/1204" new file mode 100644 index 0000000000000000000000000000000000000000..a34ef047603072958617ac137b69ae16220747f3 --- /dev/null +++ "b/\351\231\210\344\274\237\351\221\253/1204" @@ -0,0 +1,236 @@ +## 删除操作 + +### 在控制器中的操作 + +1. 对应删除页面的试图 + + 1) 根据传入的id,尝试在对应的数据库表中查找对应的记录,找到则返回那个元素,找不到则返回null + + 2) 如果blog为空,则提示要找到的那个元素不存在,反之 就显示那个元素及信息,准备删除 + + ```cs + public IActionResult Delete(int id) + { + var blog = Db.Blogs.FirstOrDefault(b => b.Id == id); + if(blog != null) + { + return View(blog); + } + + return View(); + } + ``` + +2. 对应删除操作 + + 1) 根据传入的id,尝试在对应的数据库表中查找对应的记录 + + 2) 删除操作:`Remove()` + + ```cs + public IActionResult DeleteOther(int id) + { + var blog = Db.Blogs.FirstOrDefault(b => b.Id == id); + if(blog != null) + { + Db.Blogs.Remove(blog); + } + return RedirectToAction("Index"); + } + ``` + +### 在视图中 + +1. 展现要删除的元素 + +2. 确定删除:对应代码元素,一定要获取到对应内容 + +3. 如果不需要删除,则返回首页 + +## 查找操作 + +1. 在首页视图中添加查找框(以表单的形式),**在查找框内增加`name = Keyword`属性**,跟查找内容传输相连接 + + ```html +
+ ``` + +2. 在首页的控制器中填入查询代码: + + - 填写string参数,接收查找框传入的数据 + - 判断数据是否成功传入 + + - 没有传入,则直接显示首页 + + - 传入了就进行内容匹配,显示匹配结果 + + ```cs + public IActionResult Index(string keyword) + { + if(string.IsNullOrEmpty(keyword)) + { + return View(Db.Blogs); + } + else + { + var list = Db.Blogs.Where(x => x.Title.Contains(keyword) + || x.Content.Contains(keyword) + || x.Author.Contains(keyword)) + .ToList(); + return View(list); + } + } + ``` + + +# 作业 + +## 集成查询和Lambda表达式 + +## 基础 +### 查询特定元素 找出数组中等于5的元素 +```cs +var num = numbers.Where(x => x == 5); +``` + +### 2. 查询特定范围的元素 找出数组中在2到8之间的元素。 +```cs +var num = numbers.Where(x => x > 2 && x < 8); +``` + +### 3. 查询并转换元素 将数组中的每个数字乘以2。 +```cs +var num = numbers.Select(x => x * 2); +``` + +### 4. 查询特定属性的对象 找出所有名字以"王"开头的学生。 +```cs +var list = students.Where(x => x.Name.StartsWith('王')); +``` + +### 5. 查询并排序 找出所有年龄大于20岁的学生,并按年龄降序排列 +```cs +var list = students.Where(x => x.Age > 20).OrderByDescending(x => x.Age); +``` + +### 6. 查询并去重 找出数组中所有不重复的数字。 +```cs +var list = numbers.Distinct(); +``` + +### 7. 查询第一个元素 找出数组中第一个大于3的元素 +```cs +var num = numbers.First(x => x > 3); +``` + +### 8. 查询最后一个元素 找出数组中最后一个小于7的元素。 +```cs +var num = numbers.LastOrDefault(x => x < 7); +``` + +### 9. 查询元素是否存在 检查数组中是否存在大于10的元素。 +```cs +var num = numbers.Any(x => x > 10); +``` + +### 10. 查询元素的计数 计算数组中大于5的元素数量。 +```cs +var num = numbers.Count(x => x > 5); +``` + +### 11. 查询元素的总和 计算数组中所有元素的总和。 +```cs +var num = numbers.Sum(); +``` + +### 12. 查询元素的最大值 找出数组中的最大值。 +```cs +var num = numbers.Max(); +``` + +### 13. 查询元素的最小值 找出数组中的最小值。 +```cs +var num = numbers.Min(); +``` + +### 14. 查询元素的平均值 计算数组中所有元素的平均值。 +```cs +var num = numbers.Average(); +``` + +### 15. 查询特定条件的元素 找出数组中能被3整除的元素。 +```cs + var num = numbers.Where(x => x % 3 == 0); +``` + +## 中级 +### 16. 查询并选择特定属性 找出所有学生的姓名和年龄。 +```cs +var num = students.Select(x => new { x.Name, x.Age }); +``` + +### 17. 查询并分组 按年龄分组学生,并计算每个年龄组的学生数量。 +```cs +var list = students.GroupBy(x => x.Age).Select(s => new { Age = s.Key, Count = s.Count() }); +``` + +### 18. 查询并联结 联结学生和课程表,找出每个学生的所有课程。 +```cs +var list = students.Join(courses, s => s.Id, c => c.StudentId, + (students, courses) => new { studentName = students.Name, courses = courses.CourseName }); +``` + +### 19. 查询并反转 反转数组中的元素顺序 +```cs +var list = numbers.Reverse(); +``` + + +### 21. 查询并排除 从数组中排除所有小于5的元素。 +```cs +var list = numbers.Where(x => x > 5); +``` + +### 22. 查询并填充默认值 如果数组中存在null值,用默认值0替换。 +```cs +var list = nullableNumbers.Select(n => n ?? 0); +``` + +### 23. 查询并转换类型 将字符串数组转换为整数数组。 +```cs +var list = stringNumbers.Select(s => int.Parse(s)); +``` + +### 24. 查询并使用OfType过滤 从对象数组中过滤出字符串类型的元素 +```cs +var result = objects.OfType