From 0cf5e2ba957ee7f75ce3d293bcd16d90f40e508e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=80=9D?= <1662679300@qq.com> Date: Sun, 8 Dec 2024 14:06:49 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=94=E8=AE=B0=E7=BB=83=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...36\345\210\240\346\224\271\346\237\245.md" | 23 ++ ...06\346\210\220\346\237\245\350\257\242.md" | 38 ++++ ...60\346\215\256\346\250\241\345\236\213.md" | 25 +++ .../20241205-\347\273\203\344\271\240.md" | 209 ++++++++++++++++++ 4 files changed, 295 insertions(+) create mode 100644 "\346\235\216\346\200\235/20241202-\345\242\236\345\210\240\346\224\271\346\237\245.md" create mode 100644 "\346\235\216\346\200\235/20241204-Linq\351\233\206\346\210\220\346\237\245\350\257\242.md" create mode 100644 "\346\235\216\346\200\235/20241205-\346\225\260\346\215\256\346\250\241\345\236\213.md" create mode 100644 "\346\235\216\346\200\235/\347\273\203\344\271\240/20241205-\347\273\203\344\271\240.md" diff --git "a/\346\235\216\346\200\235/20241202-\345\242\236\345\210\240\346\224\271\346\237\245.md" "b/\346\235\216\346\200\235/20241202-\345\242\236\345\210\240\346\224\271\346\237\245.md" new file mode 100644 index 0000000..637d411 --- /dev/null +++ "b/\346\235\216\346\200\235/20241202-\345\242\236\345\210\240\346\224\271\346\237\245.md" @@ -0,0 +1,23 @@ + +先创建一个项目 + +控制器 BlogsController.cs + 控制器(Controller)名字和视图(View)中的文件名要一模一样 + +在View中 + 控制器(`Controller`)名字和视图(`View`)中的文件名要一模一样 + 创建文件夹`Blogs` + 创建文件`Index.cshtml` + +在View中 +控制器(`Controller`)名字和视图(`View`)中的文件名要一模一样 + 创建文件夹`Blogs` + 创建文件`Index.cshtml` + +在Models中创Db.cs(模拟数据库创建) + 静态字段 + + 在Index.cshtml中 + 增删改查需要跳转的页面就改换位a标签 + input(button) --》 改换成a标签 + **asp-action可以跳转到书写的页面** \ No newline at end of file diff --git "a/\346\235\216\346\200\235/20241204-Linq\351\233\206\346\210\220\346\237\245\350\257\242.md" "b/\346\235\216\346\200\235/20241204-Linq\351\233\206\346\210\220\346\237\245\350\257\242.md" new file mode 100644 index 0000000..2f3f35e --- /dev/null +++ "b/\346\235\216\346\200\235/20241204-Linq\351\233\206\346\210\220\346\237\245\350\257\242.md" @@ -0,0 +1,38 @@ + +## Linq集成查询(关联Lambda) + +1. First FirstOrDefault 找第一个符合条件的元素 + + - First(x=>x.Id==id) 返回第一个Id等于id的元素,如果都没有符合的,报错 + + - FirstOrDefault(x=>x.Id==id) 返回第一个Id等于id的元素,如果都没有符合的,返回Null + + +2. Single SingleOrDefault + + - Single() 返回第一个元素,如果没有,报错 + + - SingleOrDefault() 返回第一个元素,如果没有,返回Null + + +3. Where + + - Where(x=>x.Score>=80 && x.Sex==1) 查找所有成绩大于等于80,并且性别为1的所有元素 + + +4. Selete + + - Selete(x=>new{x.Id,x.Score}) 以新的{x.Id,x.Score} 对象的形式,返回新的集合 + + + + +### 新增页面 + +1. 已经验证表单数据可以传入 + +2. 拿到传入的数据后,一般做验证,数据验证,如果不是必填、长度是不是符合要求、名称是不是已经存在、手机格式对不对、电子邮箱是否正确 + +3. 如果符合验证规则,则保存到数据库,否则提示验证不通过 + +4. 如果保存数据库成功,则跳转列表页,如果验证不通过,那就依然显示新增页面 diff --git "a/\346\235\216\346\200\235/20241205-\346\225\260\346\215\256\346\250\241\345\236\213.md" "b/\346\235\216\346\200\235/20241205-\346\225\260\346\215\256\346\250\241\345\236\213.md" new file mode 100644 index 0000000..78d5b88 --- /dev/null +++ "b/\346\235\216\346\200\235/20241205-\346\225\260\346\215\256\346\250\241\345\236\213.md" @@ -0,0 +1,25 @@ + +## 数据模型 + +1. 数据库的选择和权衡 + + - Sqlserver + + - PostgreSQL + + - Mysql/MariaDb + + - Oracel + + - Db2 + + - Sybase + + +2. ORM 工具的选择和使用 + + - EntityFramewrkCore + + - Dapper + + - SqlSuper \ No newline at end of file diff --git "a/\346\235\216\346\200\235/\347\273\203\344\271\240/20241205-\347\273\203\344\271\240.md" "b/\346\235\216\346\200\235/\347\273\203\344\271\240/20241205-\347\273\203\344\271\240.md" new file mode 100644 index 0000000..e0faaea --- /dev/null +++ "b/\346\235\216\346\200\235/\347\273\203\344\271\240/20241205-\347\273\203\344\271\240.md" @@ -0,0 +1,209 @@ +使用LINQ和Lambda表达式,我们可以轻松地执行这些查询。以下是每个查询的C#代码示例: + + 查询特定元素 - 找出数组中等于5的元素。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6 }; +var result = numbers.Where(n => n == 5).ToList(); +``` + + 查询特定范围的元素 - 找出数组中在2到8之间的元素。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6 }; +var result = numbers.Where(n => n >= 2 && n <= 8).ToList(); +``` + + 查询并转换元素 - 将数组中的每个数字乘以2。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6 }; +var result = numbers.Select(n => n * 2).ToArray(); +``` + +查询特定属性的对象 - 找出所有名字以"王"开头的学生。 +``` +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 result = students.Where(s => s.Name.StartsWith("王")).ToList(); +``` + +查询并排序 - 找出所有年龄大于20岁的学生,并按年龄降序排列。 +``` +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 result = students.Where(s => s.Age > 20).OrderByDescending(s => s.Age).ToList(); +``` + + 查询并去重 - 找出数组中所有不重复的数字。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Distinct().ToArray(); +``` + +查询第一个元素 - 找出数组中第一个大于3的元素。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.FirstOrDefault(n => n > 3); +``` + +查询最后一个元素 - 找出数组中最后一个小于7的元素。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.LastOrDefault(n => n < 7); +``` + +查询元素是否存在 - 检查数组中是否存在大于10的元素。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Any(n => n > 10); +``` + +查询元素的计数 - 计算数组中大于5的元素数量。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Count(n => n > 5); +``` + +查询元素的总和 - 计算数组中所有元素的总和。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Sum(); +``` + +查询元素的最大值 - 找出数组中的最大值。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Max(); +``` + +查询元素的最小值 - 找出数组中的最小值。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Min(); +``` + +查询元素的平均值 - 计算数组中所有元素的平均值。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Average(); +``` + +查询特定条件的元素 - 找出数组中能被3整除的元素。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Where(n => n % 3 == 0).ToArray(); +``` + +查询并选择特定属性 - 找出所有学生的姓名和年龄。 +``` +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 result = students.Select(s => new { s.Name, s.Age }).ToList(); +``` + + 查询并分组 - 按年龄分组学生,并计算每个年龄组的学生数量。 +``` +var result = students.GroupBy(s => s.Age).Select(g => new { Age = g.Key, Count = g.Count() }).ToList(); +``` + +查询并联结 - 联结学生和课程表,找出每个学生的所有课程。 +``` +List courses = new List +{ + new Course{StudentId=1,CourseName="英语"}, + new Course{StudentId=1,CourseName="数学"}, + new Course{StudentId=2,CourseName="语文"}, + new Course{StudentId=3,CourseName="物理"}, + new Course{StudentId=4,CourseName="化学"}, + new Course{StudentId=4,CourseName="生物"}, + new Course{StudentId=4,CourseName="语文"}, +}; +var result = students.SelectMany(s => courses.Where(c => c.StudentId == s.Id), (s, c) => new { s.Name, c.CourseName }).ToList(); +``` + +查询并反转 - 反转数组中的元素顺序。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Reverse().ToArray(); +``` + + 查询并填充 - 找出数组中第一个大于2的元素,并用它填充后面的所有位置。 +``` +int firstGreaterThan2 = numbers.FirstOrDefault(n => n > 2) ?? 0; +var result = numbers.Select(n => n > 2 ? firstGreaterThan2 : n).ToArray(); +``` + +查询并排除 - 从数组中排除所有小于5的元素。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Where(n => n >= 5).ToArray(); +``` + +查询并填充默认值 - 如果数组中存在null值,用默认值0替换。 +``` +int?[] nullableNumbers = { 1, null, 3, null, 5 }; +var result = nullableNumbers.Select(n => n ?? 0).ToArray(); +``` + +查询并转换类型 - 将字符串数组转换为整数数组。 +``` +string[] stringNumbers = { "1", "2", "3", "4" }; +var result = stringNumbers.Select(int.Parse).ToArray(); +``` + +查询并使用OfType过滤 - 从对象数组中过滤出字符串类型的元素。 +``` +object[] objects = { "String", 123, "Another String", 456 }; +var result = objects.OfType().ToList(); +``` + +查询并使用Zip合并 - 合并两个数组,并创建一个包含元素对的新数组。 +``` +int[] numbers1 = { 1, 2, 3 }; +int[] numbers2 = { 4, 5, 6 }; +var result = numbers1.Zip(numbers2, (n1, n2) => (n1, n2)).ToList(); +``` + +查询并使用Range生成 - 生成一个包含1到10的整数数组。 +``` +var result = Enumerable.Range(1, 10).ToArray(); +``` + +查询并使用Repeat重复 - 重复一个元素多次,创建一个新数组。 +``` +var result = Enumerable.Repeat(5, 10).ToArray(); +``` + +查询并使用Take限制数量 - 从数组中取出前5个元素。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Take(5).ToArray(); +``` + +查询并使用Skip跳过元素 - 跳过数组中的前3个元素,然后取出剩余的元素。 +``` +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Skip(3).ToArray(); +``` -- Gitee