From d26f68ea774290677616ac05726ccb16bdd251e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0MC?= Date: Sun, 18 Jan 2026 22:31:46 +0800 Subject: [PATCH 1/2] e --- .../20250112.md" | 35 ++++++++++++++ .../20250114.md" | 19 ++++++++ .../20250115.md" | 26 ++++++++++ .../20250116.md" | 47 +++++++++++++++++++ 4 files changed, 127 insertions(+) create mode 100644 "\345\274\240\346\273\241\344\273\223/20250112.md" create mode 100644 "\345\274\240\346\273\241\344\273\223/20250114.md" create mode 100644 "\345\274\240\346\273\241\344\273\223/20250115.md" create mode 100644 "\345\274\240\346\273\241\344\273\223/20250116.md" diff --git "a/\345\274\240\346\273\241\344\273\223/20250112.md" "b/\345\274\240\346\273\241\344\273\223/20250112.md" new file mode 100644 index 0000000..4ec12c3 --- /dev/null +++ "b/\345\274\240\346\273\241\344\273\223/20250112.md" @@ -0,0 +1,35 @@ +### 删除功能牵连的技术 +- url参数 + - restful 风格/控制器名称/action名称/18 + - 查询字符串 + - /控制器名称/action名称?keywrd=傻子二手车 + - /控制器名称/action名称/18?keywrd=傻子二手车 + - 查询字符串不是url地址的一部分,所以它有,或者没有不影响的路由的匹配,而restful风格的有些许不同,它是路由的一部分 +- 在action中如何接受url参数,形式如····(int id,string keyword) + +## 练习 + +1. 生成一个随机整数,范围[0,100],注意是否包含 + +```c# +Random random = new Random(); +int randomNumber = random.Next(0,101); +Console.WriteLine($"生成的[0, 100]范围内的随机整数为:{randomNumber}"); +``` + +2. 生成一个随机整数,范围(0,100],注意是否包含 +```c# + Random random = new Random(); + int randomNumber = random.Next(1,101); + Console.WriteLine(randomNumber); +``` + +3. 生成10个随机整数,范围[5,80],注意是否包含 +```c# +Random random = new Random(); +for (int i = 0; i < 10; i++) +{ + var str = random.Next(5, 80); + System.Console.WriteLine(str); +} +``` \ No newline at end of file diff --git "a/\345\274\240\346\273\241\344\273\223/20250114.md" "b/\345\274\240\346\273\241\344\273\223/20250114.md" new file mode 100644 index 0000000..8477f02 --- /dev/null +++ "b/\345\274\240\346\273\241\344\273\223/20250114.md" @@ -0,0 +1,19 @@ +### 编辑功能 + +- 两步式业务:查询回显(查)→ 提交修改(改) +- 对应请求规范(RESTful) + - 查回显:GET 请求,路径 /xxx/edit/{id}(携带主键 ID) + - 提修改:POST/PUT 请求,路径 `/xxx/update` + +## 练习 +4.定义一个字符串,字符串中有100个中文字符,需要从中随机取1个字符串 +```c# +static void Main(string[] args) + { + string ChineseStr="Gitee 旗舰版为大型组织规范化提供研发效能平台,适应不同组织的管理与研发形态,全面提升大型企业的研发效能。Gitee 旗舰版产品矩阵已构建了完整的国产软件替代方案,系列产品覆盖了项目协同域场景研发管理、测试管理、文档管理、知识库管理,"; + Console.WriteLine($"字符串总字符数:{ChineseStr.Length}个"); + Random random =new Random(); + char randomChar=ChineseStr[random.Next(0,ChineseStr.Length)]; + Console.WriteLine($"随机取出的1个中文字符是:{randomChar}"); + } +``` \ No newline at end of file diff --git "a/\345\274\240\346\273\241\344\273\223/20250115.md" "b/\345\274\240\346\273\241\344\273\223/20250115.md" new file mode 100644 index 0000000..b88bd2e --- /dev/null +++ "b/\345\274\240\346\273\241\344\273\223/20250115.md" @@ -0,0 +1,26 @@ +4.定义一个字符串,字符串中有100个中文字符,需要从中随机取1个字符串 +```c# +Random random = new Random(); +var str="定义2个字符串,第一个字符串中放百家姓,第二个字符串中放中文字符,要求从第一个字符串随机取得一个姓,再从第二个字符串中随机获得1到2个字符组成新字符串,和第一个字符串取得的姓组成一个姓名"; +var resut=random.Next(0,str.Length); +System.Console.WriteLine(str[resut]); +``` + +5.定义一个字符串,字符串中有100个中文字符,需要从中随机取5-50个字符,组成新的字符 + +```c# +static string Number(int num) +{ + Random random = new Random(); + string str = "定义2个字符串,第一个字符串中放百家姓,第二个字符串中放中文字符,要求从第一个字符串随机取得一个姓,再从第二个字符串中随机获得1到2个字符组成新字符串,和第一个字符串取得的姓组成一个姓名"; + string restult = ""; + for (int i = 0; i < num; i++) + { + var random1 = random.Next(0, str.Length); + var tmp = str[random1]; + restult += tmp; + } + return restult; +} +System.Console.WriteLine(Number(45)); +``` \ No newline at end of file diff --git "a/\345\274\240\346\273\241\344\273\223/20250116.md" "b/\345\274\240\346\273\241\344\273\223/20250116.md" new file mode 100644 index 0000000..31a096b --- /dev/null +++ "b/\345\274\240\346\273\241\344\273\223/20250116.md" @@ -0,0 +1,47 @@ +### 查找 +- 点击查找,将要查询的数据发给后台(后台是指控制器中的action) + - 在视图端将要查询的数据转换为查询字符串的形式向后端传递 +- 后台接收的数据,从数据库中查找数据,返回给前端 + - 在后台方法中接受前端传过来的数据 + + +## 练习 +```c# +public IActionResult Index(string keyword) + { + System.Console.WriteLine(keyword); + if (string.IsNullOrEmpty(keyword)) + { + return View(studentlist); + } + var newList = studentlist.Where(x => x.Name.Contains(keyword) || x.Sex.Contains(keyword)).ToList(); + return View(newList); + } +``` + +6.定义2个字符串,第一个字符串中放百家姓,第二个字符串中放中文字符,要求从第一个字符串随机取得一个姓,再从第二个字符串中随机获得1到2个字符组成新字符串,和第一个字符串取得的姓组成一个姓名 +```c# +static string GenerateRndNumberByCount(string a, int num) +{ + Random random = new Random(); + string str = "定义2个字符串,第一个字符串中放百家姓,第二个字符串中放中文字符,要求从第一个字符串随机取得一个姓,再从第二个字符串中随机获得1到2个字符组成新字符串,和第一个字符串取得的姓组成一个姓名"; + string restult = ""; + for (int i = 0; i < num; i++) + { + var random1 = random.Next(0, str.Length); + var tmp = str[random1]; + restult += tmp; + } + return restult; +} + +static string MakeName() +{ + var str = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮卞齐康伍余元卜顾孟平和穆萧尹姚邵湛汪计伏成戴谈宋茅庞熊纪舒屈项祝董梁"; + var name = "温别庄晏柴瞿阎充慕连茹习宦艾鱼容向古易慎戈廖庾终暨居衡步都耿满弘匡国文寇广禄阙东欧殳沃利蔚越夔隆师巩厍聂晁勾敖融冷訾辛阚那简饶空曾毋沙乜养鞠须丰巢关蒯相查后荆红游竺权逯盖益桓公万俟司马上官欧阳夏侯诸葛闻人东方赫连皇甫尉迟公羊澹台公冶宗政濮阳淳于单于太叔申屠公孙仲孙轩辕令狐钟离宇文长孙慕容鲜于闾丘司徒司空亓官司寇仉督子车颛孙端木巫马公西漆雕乐正壤驷公良拓跋夹谷宰父谷梁晋楚闫法汝鄢涂钦段干百里东郭南门呼延归海羊舌微生岳帅缑亢况后有琴梁丘左丘东门西门商牟佘佴伯赏南宫墨哈谯笪年爱阳佟第五言福"; + var firstName = GenerateRndNumberByCount(str, 1); + var lastName = GenerateRndNumberByCount(name, 2); + return firstName + lastName; +} +System.Console.WriteLine(MakeName()); +``` \ No newline at end of file -- Gitee From 3d9e9bd6b4c485693f8711820b7d9351e90c6575 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0MC?= Date: Sun, 25 Jan 2026 20:46:49 +0800 Subject: [PATCH 2/2] e --- .../20260119.md" | 12 + .../20260121.md" | 17 ++ .../20260122.md" | 13 + .../20260123.md" | 235 ++++++++++++++++++ 4 files changed, 277 insertions(+) create mode 100644 "\345\274\240\346\273\241\344\273\223/20260119.md" create mode 100644 "\345\274\240\346\273\241\344\273\223/20260121.md" create mode 100644 "\345\274\240\346\273\241\344\273\223/20260122.md" create mode 100644 "\345\274\240\346\273\241\344\273\223/20260123.md" diff --git "a/\345\274\240\346\273\241\344\273\223/20260119.md" "b/\345\274\240\346\273\241\344\273\223/20260119.md" new file mode 100644 index 0000000..ec806fd --- /dev/null +++ "b/\345\274\240\346\273\241\344\273\223/20260119.md" @@ -0,0 +1,12 @@ +# 笔记 +### LINQ 关键注意事项 + +1. **延迟执行**:除“返回单个值/特殊类型”的方法外,其余 LINQ 方法(Where、Select 等)均延迟执行,仅当遍历结果(`foreach`、`ToList`、`Count`)时才计算; +2. **多次遍历多次计算**:延迟执行的 LINQ 序列,每次遍历都会重新计算(如需复用,建议用 `ToList()` 缓存); +3. **类型安全**:泛型加持下,LINQ 编译期检查类型,避免运行时类型错误; +4. **语法等价性**:查询表达式最终编译为方法语法,二者功能完全一致,推荐简单场景用查询表达式,复杂场景(如多条件排序、嵌套查询)用方法语法; +5. **性能注意**:避免在 LINQ 方法中编写复杂逻辑(如数据库查询中嵌套循环),优先简化筛选/转换条件;大数据量时,`DistinctBy`/`OrderBy` 等方法需关注键的复杂度。 + + + +# 练习 diff --git "a/\345\274\240\346\273\241\344\273\223/20260121.md" "b/\345\274\240\346\273\241\344\273\223/20260121.md" new file mode 100644 index 0000000..d430ff2 --- /dev/null +++ "b/\345\274\240\346\273\241\344\273\223/20260121.md" @@ -0,0 +1,17 @@ +# 笔记 + +### 创建数据模型 +- 数据模型本质上是一个类型 +- 数据模型会被映射为数据库的一个表 +- 一般需要主键,基于约定有一个Id属性即可 +- 剩下的就看你想在数据库表中保存什么数据 +- 模型通常放在Models目录中 + +### 包作用说明: +- `Microsoft.EntityFrameworkCore.Tools`:项目内的命令支撑包,与全局`dotnet ef`工具配套,为迁移 / 更新数据库命令提供底层支持; +- `dotnet-ef`(对应`Microsoft.EntityFrameworkCore.Tools`):安装在电脑系统中,所有.NET 项目共用,提供终端可执行的`dotnet ef`命令(如生成迁移、更新数据库); +- `--v 8.0.0`指定对应的版本号,必须与项目的.NET 目标框架版本对齐。 +- `--v 8.0`指定对应的版本号,必须与项目的.NET 目标框架版本对齐。 + +### 基本模型类 +- 模型类通常放在`Models`文件夹中,是普通的C#类。 \ No newline at end of file diff --git "a/\345\274\240\346\273\241\344\273\223/20260122.md" "b/\345\274\240\346\273\241\344\273\223/20260122.md" new file mode 100644 index 0000000..4560532 --- /dev/null +++ "b/\345\274\240\346\273\241\344\273\223/20260122.md" @@ -0,0 +1,13 @@ +# 笔记 + +### db文件的建立 +1. 先添加两个依赖包 +2. 创建数据模型 +3. 创建数据库上下文 Product.cs +4. 生成迁移文件 +5. 将生成的迁移文件更新(同步)到数据库 +6. 在控制器中愉快的CRUD + +### 2个关键点 +1. 表配置 +2. 数据库连接字符串配置 \ No newline at end of file diff --git "a/\345\274\240\346\273\241\344\273\223/20260123.md" "b/\345\274\240\346\273\241\344\273\223/20260123.md" new file mode 100644 index 0000000..331c8b4 --- /dev/null +++ "b/\345\274\240\346\273\241\344\273\223/20260123.md" @@ -0,0 +1,235 @@ +## 项目 + +ShangdianController.cs +```C# +using System.Diagnostics; +using Microsoft.AspNetCore.Mvc; +using ChaoShi.Models; + +namespace ChaoShi.Controllers; + +public class ShangdianController : Controller +{ + private readonly Csshangpin db; + + public ShangdianController() + { + db = new Csshangpin(); + } + + // 查询 + public IActionResult Index(string keyword) + { + var list = db.HuoWuxinxi.ToList(); + if (string.IsNullOrEmpty(keyword)) + { + return View(list); + } + var cx = db.HuoWuxinxi.Where(x => x.Name.Contains(keyword) || x.Price.ToString().Contains(keyword)); + return View(cx); + } + + public IActionResult Add() + { + return View(); + } + // 新增 + public IActionResult AddSave(HuoWuxinxi huoWuxinxi) + { + db.HuoWuxinxi.Add(huoWuxinxi); + db.SaveChanges(); + return Redirect("/shangdian/index"); + } + // 删除 + public IActionResult Del(int id) + { + var dele = db.HuoWuxinxi.Find(id); + + if (dele == null) + { + return NotFound(); + } + db.HuoWuxinxi.Remove(dele); + db.SaveChanges(); + return Redirect("/shangdian/index"); + } + + // 编辑 + public IActionResult Update(int id) + { + var obj = db.HuoWuxinxi.Find(id); + if (obj == null) + { + return NotFound(); + } + return View(obj); + } + public IActionResult UpdateSeve(HuoWuxinxi huoWuxinxi) + { + var obj = db.HuoWuxinxi.Find(huoWuxinxi.Id); + if (obj == null) + { + return NotFound(); + } + obj.Id = huoWuxinxi.Id; + obj.Name = huoWuxinxi.Name; + obj.Price = huoWuxinxi.Price; + obj.Stock = huoWuxinxi.Stock; + + db.Update(obj); + db.SaveChanges(); + return Redirect("index"); + } +} +``` + +Models/Csshangpin.cs +```C# +using Microsoft.EntityFrameworkCore; + +namespace ChaoShi.Models; + +public class Csshangpin : DbContext +{ + public DbSet HuoWuxinxi {get;set;} + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + optionsBuilder.UseSqlite("Data Source=CSsjk.db"); + } +} +``` + +Models/HuoWuxinxi.cs +```C# +using ChaoShi.Models; + +public class HuoWuxinxi +{ + public int Id{get;set;} + public string Name{get;set;}=null!; + public decimal Price{get;set;} + public int Stock{get;set;} +} +``` + +Views/Shangdian/Add.cshtml +```html +@{ + Layout = null; +} + +@model HuoWuxinxi; + +
+ + + + + + + + + + + + + + + + + + + +
商品名称:
商品价格:
商品库存:
+
+``` + +Views/Shangdian/Index.cshtml +```html +@{ + Layout = null; +} + + + +

商品超市

+ +
+
+ + + + + +
+ +
+ + + + + + + + + + @foreach (var item in Model) + { + + + + + + + + } +
商品序号商品名称商品价格商品库存商品操作
@item.Id@item.Name@item.Price@item.Stock + + + + + + +
+``` + +Views/Shangdian/Update.cshtml +```html +@{ + Layout = null; +} + +

数据更新

+ +@model HuoWuxinxi; + +
+ + + + + + + + + + + + + + + + + + + + + +
商品序号
商品名称
商品价格
商品库存
返回列表
+
+``` \ No newline at end of file -- Gitee