From 1b1e06e37df85871070d41ce353e9cc09fedb417 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 8 Dec 2024 19:04:50 +0800 Subject: [PATCH] t --- ...56\346\224\271\351\241\271\347\233\256.md" | 88 +++++++ ...56\346\224\271\351\241\271\347\233\256.md" | 229 ++++++++++++++++++ 2 files changed, 317 insertions(+) create mode 100644 "\350\224\241\345\234\243\346\201\251/2024.12.02\344\277\256\346\224\271\351\241\271\347\233\256.md" create mode 100644 "\350\224\241\345\234\243\346\201\251/2024.12.04\345\210\240\351\231\244\344\277\256\346\224\271\351\241\271\347\233\256.md" diff --git "a/\350\224\241\345\234\243\346\201\251/2024.12.02\344\277\256\346\224\271\351\241\271\347\233\256.md" "b/\350\224\241\345\234\243\346\201\251/2024.12.02\344\277\256\346\224\271\351\241\271\347\233\256.md" new file mode 100644 index 0000000..d82d75d --- /dev/null +++ "b/\350\224\241\345\234\243\346\201\251/2024.12.02\344\277\256\346\224\271\351\241\271\347\233\256.md" @@ -0,0 +1,88 @@ +### 1.Linq集成查询 +作用在谁身上:集合,特别是实现了IEnumerable接口的集合上,方法参数中,一般是Lambda表达式(其实就是匿名函数) + + - 查询单个元素 + - First() 函数中可以查找第一个条件,形如(t=>t.Id==id).但是,如果没有第一个元素,或者没有符合第一个条件的元素,则报错。 + - FirstOrDefault()类似上面的用法,但是在没有符合条件的时候,不报错,而是返回一个null + + - 查找多个元素 + - where()条件函数,可以差值啊符合一定条件的元素,返回的是一个集合。 + + - 重新设计返回的数据类型 + - select() 这个函数可以帮助我们处理函数返回值的真正内容。 + +修改效果图1:![20241208170136](sjt78aar6.hn-bkt.clouddn.com/20241208170136.png) + +新增页面效果图:![20241208170856](sjt78aar6.hn-bkt.clouddn.com/20241208170856.png) +新增效果图2:![20241208170732](sjt78aar6.hn-bkt.clouddn.com/20241208170732.png) +核心代码: + +```cs +//控制器新增页面create中 + public IActionResult Create() + { + + return View(); + } + [HttpPost] + [ValidateAntiForgeryToken] + + public IActionResult Create(Blogs input) + { + if(ModelState.IsValid){ + + var maxId=Db.Blogs.Select(t=>t.Id).Max(); + input.Id=maxId+1; + Db.Blogs.Add(input); + return RedirectToAction("Index"); + } + return View(input); + + + + } +``` +```cs +//在Edit中 +@model Blog.Models.Blogs; +
+
+
+
+
+ +
+``` + +```cs +//在控制器中 +[HttpPost] + //提示填写内容 + [ValidateAntiForgeryToken] + public IActionResult Edit(Blogs input) + { + if(ModelState.IsValid){ + //根据传入的id,从数据库中拿到最新值 + var blog=Db.Blogs.FirstOrDefault(x=>x.Id==input.Id); + //判断是否有对应的对象,有可能找到对应的id记录,也有可能找不到 + //找到后,修改那个对象,然后保存到数据库 + if(blog!=null){ + blog.Title=input.Title; + blog.Author=input.Author; + blog.Content=input.Content; + } + + return RedirectToAction("Index"); + } + return View(input); + + + } + public IActionResult Edit(int Id) + { + //通过一定方式,拿到那个数据 + var blog =Db.Blogs.FirstOrDefault(x=>x.Id==Id); + return View(blog); + } + +``` \ No newline at end of file diff --git "a/\350\224\241\345\234\243\346\201\251/2024.12.04\345\210\240\351\231\244\344\277\256\346\224\271\351\241\271\347\233\256.md" "b/\350\224\241\345\234\243\346\201\251/2024.12.04\345\210\240\351\231\244\344\277\256\346\224\271\351\241\271\347\233\256.md" new file mode 100644 index 0000000..e50c29b --- /dev/null +++ "b/\350\224\241\345\234\243\346\201\251/2024.12.04\345\210\240\351\231\244\344\277\256\346\224\271\351\241\271\347\233\256.md" @@ -0,0 +1,229 @@ +### 删除 +在控制器中 删除后是要返回Index页面的 +```cs +public IActionResult Delete(int id) + + { + //根据提供(传入的id),尝试在对应的数据库中查找对的记录,找到则返回那个元素,找不到则返回null + var blog=Db.Blogs.FirstOrDefault(x=>x.Id==id); + //如果blog为空,则提示要找的那个元素不存在反之,就显示那个元素及信息,准备删除 + + if(blog!=null){ + return View(blog); + } + return View(); + } + + [HttpPost] + public IActionResult DeleteConfirm(int id){ + var blog=Db.Blogs.FirstOrDefault(x=>x.Id==id); + + if(blog!=null){ + Db.Blogs.Remove(blog); + } + + return RedirectToAction("Index"); + } + public IActionResult DeleteOther(int id){ + var blog=Db.Blogs.FirstOrDefault(x=>x.Id==id); + + if(blog!=null){ + Db.Blogs.Remove(blog); + } + + return RedirectToAction("Index"); + } + +在foreach中删除: + 删除 + +``` + +在删除中 +```cs +@model Blog.Models.Blogs; + +

你真的要删除吗???

+ + + + + + + + + + + + + + + + + + + +
标题:@Model.Title
内容:@Model.Content
作者@Model.Author
+ 删除 + @*
+
+ + +
*@ +
取消删除
+是否确定要删除,要删除的内容显示出来,如果要是确定删除了就返回到视图中,取消删除也就取消了。 +``` + +### 查找元素 + +在Index中输入要查找的元素 +相关代码: +```cs +
+ + +
+``` +控制器中: +```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); + } + + } + +``` + +### 作业---基础练习 +```cs +using Microsoft.AspNetCore.Mvc; +namespace Blog.Controllers; +public class BlogsController : Controller{ + + //1.查询特定元素 找出数组中等于5的元素。 + public IActionResult Index1(){ + int[] numbers = { 1, 2, 3, 4, 5, 6 }; + var result1 = numbers.Where(n => n == 5).ToArray(); + return Ok(result1); + } + //2.查询特定范围的元素 找出数组中在2到8之间的元素 + public IActionResult Index2(){ + int[] numbers = { 1, 2, 3, 4, 5, 6 }; + var result2 = numbers.Where(n => n >= 2 && n <= 8).ToArray(); + return Ok(result2); + } + //3.查询并转换元素 将数组中的每个数字乘以2。 + public IActionResult Index3(){ + int[] numbers = { 1, 2, 3, 4, 5, 6 }; + var result3 = numbers.Select(n => n * 2).ToArray(); + return Ok(result3); + } + //4.查询特定属性的对象 找出所有名字以"王"开头的学生。 + public class Student{ + public int Id { get; set; } + public string Name { get; set; }=null!; + public int Age { get; set; } + } + public IActionResult Index4(){ + List students = new List + { + new Student {Id=1, Name = "王有才", Age = 21 }, + new Student {Id=2, Name = "王中王", Age = 22 }, + new Student {Id=3, Name = "张语嫣", Age = 23 }, + new Student {Id=4, Name = "詹宇航", Age = 35 }, + new Student {Id=5, Name = "郑雨良", Age = 26 }, + }; + var result4 = students.Select(student => student.Name.StartsWith("王")).ToArray(); + return Ok(result4); + } + //5. 查询并排序 找出所有年龄大于20岁的学生,并按年龄降序排列。 + public IActionResult Index5(){ + List students = new List + { + new Student {Id=1, Name = "王有才", Age = 21 }, + new Student {Id=2, Name = "罗婷", Age = 21 }, + new Student {Id=3, Name = "王中王", Age = 22 }, + new Student {Id=4, Name = "李子柒", Age = 22 }, + new Student {Id=5, Name = "张语嫣", Age = 23 }, + new Student {Id=6, Name = "詹宇航", Age = 35 }, + new Student {Id=7, Name = "郑雨良", Age = 26 }, + new Student {Id=8, Name = "欧文", Age = 26 }, + }; + var result5=students.Where(x=>x.Age>20).OrderByDescending(x=>x.Age).ToList(); + return Ok(result5); + } + + // 6.查询并去重 找出数组中所有不重复的数字。 + public IActionResult Index6(){ + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var result6=numbers.Distinct().ToList(); + return Ok(result6); + } + // 7.查询第一个元素 找出数组中第一个大于3的元素。 + public IActionResult Index7(){ + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var result7=numbers.FirstOrDefault(x=>x>3).ToString(); + return Ok(result7); + } + // 8.查询最后一个元素 找出数组中最后一个小于7的元素。 + public IActionResult Index8(){ + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3}; + var result8=numbers.LastOrDefault(x=>x<7).ToString(); + return Ok(result8); + } + + + // 9.查询元素是否存在 检查数组中是否存在大于10的元素。 + public IActionResult Index9(){ + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + bool result9=numbers.Any(x=>x>10); + return Ok(result9); + } + // 10.查询元素的计数 计算数组中大于5的元素数量。 + public IActionResult Index10(){ + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var result10=numbers.Count(x=>x>5).ToString(); + return Ok(result10); + } + // 11查询元素的总和 计算数组中所有元素的总和。 + public IActionResult Index11(){ + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var result11=numbers.Sum(); + return Ok(result11); + } + // 12查询元素的最大值 找出数组中的最大值。 + public IActionResult Index12(){ + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var result12=numbers.Max().ToString(); + return Ok(result12); + } + // 13查询元素的最小值 找出数组中的最小值。 + public IActionResult Index13(){ + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var result13=numbers.Min().ToString(); + return Ok(result13); + } + // 14查询元素的平均值 计算数组中所有元素的平均值。 + public IActionResult Index14(){ + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var result14=numbers.Average().ToString(); + return Ok(result14); + } + // 15查询特定条件的元素 找出数组中能被3整除的元素。 + public IActionResult Index15(){ + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var result15=numbers.Where(x=>x%3==0).ToList(); + return Ok(result15); + } + + +} +``` \ No newline at end of file -- Gitee