From acbb6eaa35f7142e89495ac4b316f7808aedfd32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E5=AE=87=E8=88=AA?= <14093708+fang-----yuhang@user.noreply.gitee.com> Date: Sun, 15 Dec 2024 20:01:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...23\350\277\236\346\216\245\357\274\211.md" | 69 ++++++++++++++ ...\256\260\357\274\210Lanmda\357\274\211.md" | 67 ++++++++++++++ ...256\260\357\274\210Lanmda2\357\274\211.md" | 90 +++++++++++++++++++ 3 files changed, 226 insertions(+) create mode 100644 "\346\226\271\345\256\207\350\210\252/20241209\347\254\224\350\256\260\357\274\210\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245\357\274\211.md" create mode 100644 "\346\226\271\345\256\207\350\210\252/20241211\347\254\224\350\256\260\357\274\210Lanmda\357\274\211.md" create mode 100644 "\346\226\271\345\256\207\350\210\252/20241213\347\254\224\350\256\260\357\274\210Lanmda2\357\274\211.md" diff --git "a/\346\226\271\345\256\207\350\210\252/20241209\347\254\224\350\256\260\357\274\210\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245\357\274\211.md" "b/\346\226\271\345\256\207\350\210\252/20241209\347\254\224\350\256\260\357\274\210\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245\357\274\211.md" new file mode 100644 index 0000000..02efa34 --- /dev/null +++ "b/\346\226\271\345\256\207\350\210\252/20241209\347\254\224\350\256\260\357\274\210\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245\357\274\211.md" @@ -0,0 +1,69 @@ + +## 连接数据库: + +1. 定义数据库模型 +```cs +using Microsoft.EntityFrameworkCore; +namespace Blogs.Models; + +public class BlogDbContext : DbContext +{ + public BlogDbContext(DbContextOptions options) : base(options) + { + } + public DbSet Blogs { get; set; } = null!; +} +``` + +2. 在Program.cs文件中添加连接数据库语句,以及执行操作代码 +```cs +var connectionString = $"Server=.;Database=MdBlog;uid=sa;pwd=123456;TrustServerCertificate=true"; + +builder.Services.AddDbContext(opt => +{ + opt.UseSqlServer(connectionString); +}); +builder.Services.AddScoped(); + + +``` +@startmindmap +* 持久化及持久化方案 + * 结绳记事 + * 甲骨文 + * 木简 + * 竹简 + * 碑 + * 纸 + * 脚本 + * 电子的文件,如文本文件、Excel、Word + * 数据库 + * 常用数据 + * Sqlserver + * 常用的ORM工具(应用和数据库打交道的工具) +* Models数据库模型 + * 模型中的每一个类型,都和数据库表中的数据库表一一对应 + * 一条数据表中的记录,在程序或者应用中表现为一个对象 + * 一系列记录,则在程序和应用中表现为一个集合 +@endmindmap + + +安装全局工具 +``` +dotnet tool install --global dotnet-ef +``` +安装包 +``` + Microsoft.EntityFrameworkCore.Design +dotnet add package Microsoft.EntityFrameworkCore.Design + +``` +添加迁移数据 +``` +dotnet ef migrations add InitCreate + +``` +将迁移文件更新到数据库 +``` +dotnet ef database update +``` \ No newline at end of file diff --git "a/\346\226\271\345\256\207\350\210\252/20241211\347\254\224\350\256\260\357\274\210Lanmda\357\274\211.md" "b/\346\226\271\345\256\207\350\210\252/20241211\347\254\224\350\256\260\357\274\210Lanmda\357\274\211.md" new file mode 100644 index 0000000..17ea1d1 --- /dev/null +++ "b/\346\226\271\345\256\207\350\210\252/20241211\347\254\224\350\256\260\357\274\210Lanmda\357\274\211.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/\346\226\271\345\256\207\350\210\252/20241213\347\254\224\350\256\260\357\274\210Lanmda2\357\274\211.md" "b/\346\226\271\345\256\207\350\210\252/20241213\347\254\224\350\256\260\357\274\210Lanmda2\357\274\211.md" new file mode 100644 index 0000000..0c688df --- /dev/null +++ "b/\346\226\271\345\256\207\350\210\252/20241213\347\254\224\350\256\260\357\274\210Lanmda2\357\274\211.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