From 6acab48a251e154c2776c950f65d659701447ba6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=9C=E4=BB=95=E9=B9=8F?= <2293215729@qq.com> Date: Sun, 8 Dec 2024 15:50:14 +0800 Subject: [PATCH 1/2] 20241205 --- ...45\346\211\276\347\254\224\350\256\260.md" | 171 ++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 "\345\206\234\344\273\225\351\271\217/2024.12.04-\345\210\240\351\231\244\357\274\214\346\237\245\346\211\276\347\254\224\350\256\260.md" diff --git "a/\345\206\234\344\273\225\351\271\217/2024.12.04-\345\210\240\351\231\244\357\274\214\346\237\245\346\211\276\347\254\224\350\256\260.md" "b/\345\206\234\344\273\225\351\271\217/2024.12.04-\345\210\240\351\231\244\357\274\214\346\237\245\346\211\276\347\254\224\350\256\260.md" new file mode 100644 index 0000000..cdb5f97 --- /dev/null +++ "b/\345\206\234\344\273\225\351\271\217/2024.12.04-\345\210\240\351\231\244\357\274\214\346\237\245\346\211\276\347\254\224\350\256\260.md" @@ -0,0 +1,171 @@ + +## 重要代码 + +```csharp +1. +int[] numbers = { 1, 2, 3, 4, 5, 6 }; +var result = numbers.Where(n => n == 5).ToArray(); + +2.int[] numbers = { 1, 2, 3, 4, 5, 6 }; +var result = numbers.Where(n => n >= 2 && n <= 8).ToArray(); + +3.int[] numbers = { 1, 2, 3, 4, 5, 6 }; +var result = numbers.Select(n => n * 2).ToArray(); + + +4.List students = new List +{ + new Student {Id=1, Name = "王有才", Age = 21 }, + // ... +}; +var result = students.Where(s => s.Name.StartsWith("王")).ToList(); + + +5.List students = new List +{ + new Student {Id=1, Name = "王有才", Age = 21 }, + // ... +}; +var result = students.Where(s => s.Age > 20).OrderByDescending(s => s.Age).ToList(); + + +6.int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Distinct().ToArray(); + +7.int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.FirstOrDefault(n => n > 3); + + +8.int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Reverse().FirstOrDefault(n => n < 7); + +9.int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Any(n => n > 10); + +10.int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Count(n => n > 5); + +11.int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Sum(); + +12.int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Max(); + + +13.int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Min(); + +14.int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +var result = numbers.Average(); + + +``` + +## 查找 +模型:Student模型包含学生的基本信息,如学号、姓名等。同时,模型还包含一个查询方法来获取所有学生的信息 + +视图:视图可以是一个HTML页面,它包含一个表格来展示所有学生的信息。表格的每一行都对应一个学生的信息 + +控制器:StudentController控制器包含一个方法来处理用户的查找请求。该方法会调用Student模型的查询方法来获取所有学生的信息,并将信息传递给视图进行展示 +```csharp + + @* *@ +
+ @* *@ + @* *@ + @* 查找 *@ +
+ + +
+
+
+ 新增 +
+ + + + + + + + + + + + + + + @foreach (var blog in @Model) + { + + + + + + + + } + + + +``` + + +## 删除 + +模型:Student模型包含一个删除方法,该方法接受一个学号作为参数,并删除对应的学生信息 + +视图:视图可以是一个HTML页面,它包含一个表格来展示所有学生的信息。每个学生的信息旁边都有一个删除按钮。当用户点击删除按钮时,浏览器会发送一个包含学号的请求到服务器 + +控制器:StudentController控制器包含一个方法来处理用户的删除请求。该方法会接收学号参数,调用Student模型的删除方法来删除对应的学生信息,并选择一个包含成功消息的视图来通知用户 + + + +```csharp +@model Blog.Models.Blogs; + +

你真的要删除以下元素吗?

+ +
Id标题内容作者操作
@blog.Id@blog.Title@blog.Content@blog.Author + @* + *@ + 编辑 + 删除 +
+ + + + + + + + + + + + + + + + +
标题:@Model.Title
内容:@Model.Content
作者:@Model.Author
+ 删除 + @*
+
+ +
*@ +
+ 取消删除 +
+``` + +`注意事项` +数据验证:在删除操作之前,应该进行必要的数据验证,以确保用户真的想要删除指定的数据。这可以通过在视图中添加确认提示或在控制器中进行参数验证来实现 + +事务管理:如果删除操作涉及多个数据库表或复杂的业务逻辑,应该考虑使用事务管理来确保数据的一致性和完整性 + +错误处理:在查找和删除操作中,应该进行错误处理,以捕获和处理可能出现的异常或错误情况。这可以通过在控制器中添加异常处理代码或使用框架提供的错误处理机制来实现 + + + -- Gitee From f1fc1240f6a3cd53f1235be9ce510d822b6f1bf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=9C=E4=BB=95=E9=B9=8F?= <2293215729@qq.com> Date: Sun, 15 Dec 2024 22:23:20 +0800 Subject: [PATCH 2/2] 202412 --- ...4.12.11-Lanmda\347\254\224\350\256\260.md" | 67 ++++++++++++++ ....12.13-Lanmda\347\254\224\350\256\2602.md" | 90 +++++++++++++++++++ 2 files changed, 157 insertions(+) create mode 100644 "\345\206\234\344\273\225\351\271\217/2024.12.11-Lanmda\347\254\224\350\256\260.md" create mode 100644 "\345\206\234\344\273\225\351\271\217/2024.12.13-Lanmda\347\254\224\350\256\2602.md" diff --git "a/\345\206\234\344\273\225\351\271\217/2024.12.11-Lanmda\347\254\224\350\256\260.md" "b/\345\206\234\344\273\225\351\271\217/2024.12.11-Lanmda\347\254\224\350\256\260.md" new file mode 100644 index 0000000..17ea1d1 --- /dev/null +++ "b/\345\206\234\344\273\225\351\271\217/2024.12.11-Lanmda\347\254\224\350\256\260.md" @@ -0,0 +1,67 @@ +# MVC中LINQ查询 + +## 1. LINQ简介 + +LINQ(Language Integrated Query,语言集成查询)是微软为.NET Framework提供的一种查询技术,允许开发者在C#等语言中直接使用类似SQL的语法进行数据查询和操作。LINQ支持多种数据源,包括集合、数据库、XML等,并提供统一的查询语法。 + +## 2. LINQ查询的基本语法 + +### 2.1 查询表达式语法 + +LINQ查询表达式语法类似于SQL,常见结构如下: + +```csharp +var query = from item in dataSource + where condition + orderby item.Property ascending/descending + select item; +``` + +- **from**: 指定数据源和范围变量。 +- **where**: 过滤数据,返回满足条件的元素。 +- **orderby**: 对结果进行排序,可以指定升序(ascending)或降序(descending)。 +- **select**: 定义查询结果的形状或类型。 + +### 2.2 方法语法 + +方法语法使用扩展方法和Lambda表达式,常见方法包括: + +- **Where**: 过滤数据。 +- **Select**: 投影数据。 +- **OrderBy**: 排序数据。 +- **GroupBy**: 分组数据。 + +示例: + +```csharp +var query = dataSource.Where(item => item.Property > 10) + .OrderBy(item => item.Property) + .Select(item => item.Property); +``` + +## 3. LINQ查询操作符 + +### 3.1 常用操作符 + +- **Where**: 用于筛选数据。 +- **Select**: 用于选择和转换数据。 +- **OrderBy**: 用于排序数据。 +- **GroupBy**: 用于分组数据。 +- **Join**: 用于连接多个数据源。 + +### 3.2 聚合操作符 + +- **Sum**: 计算总和。 +- **Average**: 计算平均值。 +- **Count**: 计算元素数量。 +- **Max** 和 **Min**: 查找最大值和最小值。 + +## 4. LINQ查询的执行 + +### 4.1 延迟执行 + +LINQ查询默认采用延迟执行(Lazy Evaluation),即查询在定义时不立即执行,而是在迭代结果时才执行。这有助于提高性能,尤其是在处理大数据集时。 + +### 4.2 立即执行 + +可以使用诸如 `ToList()`, `ToArray()`, `Count()` 等方法来强制立即执行查询。这些方法会遍历查询结果并生成一个新的集合。 \ No newline at end of file diff --git "a/\345\206\234\344\273\225\351\271\217/2024.12.13-Lanmda\347\254\224\350\256\2602.md" "b/\345\206\234\344\273\225\351\271\217/2024.12.13-Lanmda\347\254\224\350\256\2602.md" new file mode 100644 index 0000000..0c688df --- /dev/null +++ "b/\345\206\234\344\273\225\351\271\217/2024.12.13-Lanmda\347\254\224\350\256\2602.md" @@ -0,0 +1,90 @@ +### 数据操作方法整理 +```js +// 检查字符串是否以指定前缀开头 +StartsWith("") + +// 降序排序 +OrderByDescend() + +// 升序排序 +OrderBy() + +// 移除重复元素 +Distinct() + +// 获取最后一个元素,或返回默认值 +LastOrDefault() + +// 判断数组中是否存在指定元素 +Array.Exists(元素, 条件 => 条件) + +// 获取元素总数 +Count() + +// 计算元素总和 +Sum(条件 => 条件) + +// 获取最大值 +Max(条件 => 条件) + +// 获取最小值 +Min(条件 => 条件) + +// 计算平均值 +Average(条件 => 条件) + +// 提取特定属性 +Select() +// 示例:获取学生的姓名和年龄 +var result = students.Select(s => new { s.Name, s.Age }).ToList(); + +// 按属性分组并统计数量 +GroupBy() + Select() + Count() +// 示例:按年龄分组并统计每组学生数量 +var grouped = students.GroupBy(s => s.Age).Select(g => new { Age = g.Key, Count = g.Count() }); + +// 反转序列 +Reverse() + +// 替换 null 值为默认值 +Select(x => x ?? 0) +// 示例:将数组中的 null 替换为 0 +int?[] numbers = { 1, null, 3, null, 5 }; +var replaced = numbers.Select(n => n ?? 0); + +// 类型转换 +Select(x => int.Parse(x)) +// 示例:将字符串数组转换为整数数组 +string[] strNumbers = { "1", "2", "3" }; +int[] intNumbers = strNumbers.Select(n => int.Parse(n)).ToArray(); + +// 筛选指定类型的元素 +OfType() +// 示例:从对象数组中筛选字符串类型元素 +object[] mixedArray = { "text", 123, "more text" }; +var strings = mixedArray.OfType().ToList(); + +// 创建范围数组 +Enumerable.Range(起始值, 数量).ToArray() +// 示例:生成 1 到 10 的数组 +int[] range = Enumerable.Range(1, 10).ToArray(); + +// 重复生成元素 +Enumerable.Repeat(元素, 次数).ToArray() +// 示例:生成五个 7 +int[] repeated = Enumerable.Repeat(7, 5).ToArray(); + +// 获取前 N 个元素 +Take(N) +// 示例:获取数组前 5 个元素 +int[] arr = { 1, 2, 3, 4, 5, 6 }; +var topFive = arr.Take(5); + +// 跳过前 N 个元素 +Skip(N) +// 示例:跳过数组前 3 个元素 +var remaining = arr.Skip(3); +``` + + + -- Gitee