diff --git "a/\345\221\250\346\227\255/20241202\347\274\226\350\276\221.md" "b/\345\221\250\346\227\255/20241202\347\274\226\350\276\221.md" new file mode 100644 index 0000000000000000000000000000000000000000..09c9b3775171e80c61ca4b921c23097737c314a0 --- /dev/null +++ "b/\345\221\250\346\227\255/20241202\347\274\226\350\276\221.md" @@ -0,0 +1,78 @@ +## 编辑操作 + +### 在控制器中 +1. 根据传入的Id,从数据库中拿到最新的值 + +2. 判断是否有对应的对象,有可能找到对应的id记录 + + - 找得到,修改对应的对象,然后保存回数据库,返回列表页 + + ```cs + if(blog != null) + { + blog.Title = input.Title; + blog.Content = input.Content; + blog.Author = input.Author; + } + ``` + + - 找不到,直接返回列表页(简单操作) + + +在控制器中,两个Edit对应的代码: + +1. 对应Edit的视图 + +```cs +public IActionResult Edit(int id) +{ + + var blog = Db.Blog.FirstOrDefault(x=>x.Id == id); + return View(blog); +} + + +``` + +2. 对应Edit编辑操作页面 post请求 + +```cs +[HttpPost] +[ValidateAntiForgeryToken] +public IActionResult Edit(Blog input) +{ + ... + + return View(input); +} +``` + +### 视图中 + +内容与添加操作的代码相似 + +## Linq集成查询 +作用者:集合,特别是实现了IEnumerable接口的集合上,方法参数中,一般是Lambda表达式 + + +1. 查询单个元素 + + - First() 函数中可以写查找第一个的条件,形如(t => t.Id==id)。但是如果没有第一个元素,或者没有符合条件的第一个元素,则报错 + + - FirstOrDefault() 类似上面的用法,但是在没有符合条件的时候,不报错,而是返回一个null + +2. 查询多个元素 + + - Where() 条件函数,可以查找符合一定条件(可多个)的元素,返回的是一个集合 + + +3. 重新返回的数据类型 + + - Select() 这个函数可帮助我们处理函数返回的真正内容 + + +## 其他 + +- null:没有框框 + +- 空值:有框框,但没值(里面没有加入内容) diff --git "a/\345\221\250\346\227\255/20241204\345\210\240\351\231\244\346\237\245\346\211\276\345\242\236\345\212\240.md" "b/\345\221\250\346\227\255/20241204\345\210\240\351\231\244\346\237\245\346\211\276\345\242\236\345\212\240.md" new file mode 100644 index 0000000000000000000000000000000000000000..789ed0bb8d05af2865dec339871709db6317a0f1 --- /dev/null +++ "b/\345\221\250\346\227\255/20241204\345\210\240\351\231\244\346\237\245\346\211\276\345\242\236\345\212\240.md" @@ -0,0 +1,240 @@ +## 删除操作 + +### 在控制器中的操作 + +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(); +``` + +### 20. 查询并填充 找出数组中第一个大于2的元素,并用它填充后面的所有位置。 +```cs + +``` + +### 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(); +``` + +## 高级 +### 25. 查询并使用Zip合并 合并两个数组,并创建一个包含元素对的新数组。 +```cs +var list = numbers1.Zip(numbers2, (x, y) => x + " " + y); +``` + +### 26. 查询并使用Range生成 生成一个包含1到10的整数数组。 +```cs +var list = Enumerable.Range(1, 10); +``` + +### 27. 查询并使用Repeat重复 重复一个元素多次,创建一个新数组。 +```cs +var list = Enumerable.Repeat("我是一个元素", 10); +``` + +### 28. 查询并使用Take限制数量 从数组中取出前5个元素。 +```cs +var list = numbers.Take(5); +``` + +### 29. 查询并使用Skip跳过元素 跳过数组中的前3个元素,然后取出剩余的元素。 +```cs +var list = numbers.Skip(3); +``` \ No newline at end of file