| ID | +姓名 | +电子邮件 | +电话 | +操作 | +
|---|---|---|---|---|
| @customer.CustomerID | +@customer.Name | +@customer.Email | +@customer.Phone | ++ @Html.ActionLink("详情", "Details", new { id = customer.CustomerID }) | + @Html.ActionLink("编辑", "Edit", new { id = customer.CustomerID }) | + @Html.ActionLink("删除", "Delete", new { id = customer.CustomerID }) + | +
+ @Html.ActionLink("添加新客户", "Create") +
+ + +``` + +- **Create.cshtml**: 添加新客户。 + +```html +@model LinqPractice.Models.Customer + + + + ++ @Html.ActionLink("返回", "Index") +
+ + +``` + +- **Delete.cshtml**: 删除客户。 + +```html +@model LinqPractice.Models.Customer + + + + +确定要删除客户 "@Model.Name" 吗?
+ @using (Html.BeginForm()) + { + @Html.AntiForgeryToken() + @Html.HiddenFor(m => m.CustomerID) + + } ++ @Html.ActionLink("返回", "Index") +
+ + +``` \ No newline at end of file diff --git "a/\351\231\210\345\245\225\344\275\263/20241211Linq\346\237\245\350\257\242.md" "b/\351\231\210\345\245\225\344\275\263/20241211Linq\346\237\245\350\257\242.md" new file mode 100644 index 0000000000000000000000000000000000000000..2bf0b0a7f2870523834cec47056ec873bb29dc57 --- /dev/null +++ "b/\351\231\210\345\245\225\344\275\263/20241211Linq\346\237\245\350\257\242.md" @@ -0,0 +1,84 @@ +# 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()` 等方法来强制立即执行查询。这些方法会遍历查询结果并生成一个新的集合。 + +## 5. LINQ在MVC中的应用 + +在ASP.NET MVC中,LINQ常用于数据访问层(如Entity Framework)进行数据库操作。以下是一个简单的示例: + +```csharp +public ActionResult GetCustomers(string city) +{ + using (var db = new SampleDataContext()) + { + var customers = from c in db.Customers + where c.City == city + select c; + return View(customers.ToList()); + } +} +``` \ No newline at end of file diff --git "a/\351\231\210\345\245\225\344\275\263/20241213Linq\346\213\223\345\261\225\350\257\255\346\263\225.md" "b/\351\231\210\345\245\225\344\275\263/20241213Linq\346\213\223\345\261\225\350\257\255\346\263\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..63dd05104e8c9595add2217974c8881e0cf8f13f --- /dev/null +++ "b/\351\231\210\345\245\225\344\275\263/20241213Linq\346\213\223\345\261\225\350\257\255\346\263\225.md" @@ -0,0 +1,57 @@ +## 标准查询操作符及例子 +这些是LINQ中最常用的扩展方法,它们被定义在System.Linq命名空间中。 + +1. Where - 筛选 + + List