doc: update docs/cs.md
This commit is contained in:
parent
d8e1bdf6ca
commit
e8af72372c
85
docs/cs.md
85
docs/cs.md
@ -1065,23 +1065,17 @@ bool hasKey2 = hashTable.ContainsKey("key2");
|
|||||||
string valueOfKey2 = (string)hashTable["key2"];
|
string valueOfKey2 = (string)hashTable["key2"];
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LINQ
|
LINQ
|
||||||
--------
|
--------
|
||||||
|
|
||||||
> C#语言中的LINQ(Language-Integrated Query)是一种强大的查询语言,它提供了一种统一的编程模型,使得数据查询变得更加直观和简洁。
|
> C#语言中的LINQ(Language-Integrated Query)是一种强大的查询语言,它提供了一种统一的编程模型,使得数据查询变得更加直观和简洁。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### FROM
|
### FROM
|
||||||
|
|
||||||
<!--rehype:wrap-class=col-span-3-->
|
<!--rehype:wrap-class=col-span-3-->
|
||||||
|
|
||||||
> 任何数据源,包括对象集合、数据库、XML等。
|
> 任何数据源,包括对象集合、数据库、XML等。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### WHERE
|
### WHERE
|
||||||
|
|
||||||
<!--rehype:wrap-class=col-span-2&style=background:#e91e63;-->
|
<!--rehype:wrap-class=col-span-2&style=background:#e91e63;-->
|
||||||
@ -1115,8 +1109,6 @@ List<string> nameList = new() { "Bob", "Echo" };
|
|||||||
var result4 = students.Where(student => nameList.Contains(student.Name));
|
var result4 = students.Where(student => nameList.Contains(student.Name));
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### GROUPBY
|
### GROUPBY
|
||||||
|
|
||||||
> 分组查询
|
> 分组查询
|
||||||
@ -1140,8 +1132,6 @@ var groupedByGrade = students.GroupBy(student => student.Grade);
|
|||||||
|
|
||||||
<!--rehype:className=wrap-text-->
|
<!--rehype:className=wrap-text-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### SELECT
|
### SELECT
|
||||||
|
|
||||||
<!--rehype:wrap-class=col-span-2&style=background:#e91e63;-->
|
<!--rehype:wrap-class=col-span-2&style=background:#e91e63;-->
|
||||||
@ -1163,9 +1153,9 @@ List<Student> students = new List<Student>
|
|||||||
|
|
||||||
// 使用SELECT创建一个新的匿名类,并输出为集合,一般配合Where使用
|
// 使用SELECT创建一个新的匿名类,并输出为集合,一般配合Where使用
|
||||||
var result1 = students.Select(student =>
|
var result1 = students.Select(student =>
|
||||||
new
|
new
|
||||||
{
|
{
|
||||||
student.Name,
|
student.Name,
|
||||||
student.Age
|
student.Age
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1177,8 +1167,6 @@ var result2 = students.Select(student => new StudentDto()
|
|||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### ORDERBY
|
### ORDERBY
|
||||||
|
|
||||||
> 排序
|
> 排序
|
||||||
@ -1205,24 +1193,26 @@ var result2 = students.OrderByDescending(student => student.Age);
|
|||||||
|
|
||||||
<!--rehype:className=wrap-text-->
|
<!--rehype:className=wrap-text-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### JOIN
|
### JOIN
|
||||||
|
|
||||||
<!--rehype:wrap-class=col-span-3-->
|
<!--rehype:wrap-class=col-span-3-->
|
||||||
|
|
||||||
> `Join`:用于执行内连接操作,它会返回两个数据源中满足连接条件的元素的交集
|
- `Join`:用于执行内连接操作,它会返回两个数据源中满足连接条件的元素的交集
|
||||||
>
|
- `GroupJoin`:用于执行左外连接(left outer join)操作,它会返回左边数据源的所有元素,以及每个元素所匹配的右边数据源的元素组成的集合。(嵌套)
|
||||||
> `GroupJoin`:用于执行左外连接(left outer join)操作,它会返回左边数据源的所有元素,以及每个元素所匹配的右边数据源的元素组成的集合。(嵌套)
|
|
||||||
|
示例数据源
|
||||||
|
|
||||||
```cs
|
```cs
|
||||||
// 示例数据源
|
|
||||||
List<Department> departments = new List<Department>
|
List<Department> departments = new List<Department>
|
||||||
{
|
{
|
||||||
new Department { ID = 1, Name = "HR" },
|
new Department { ID = 1, Name = "HR" },
|
||||||
new Department { ID = 2, Name = "IT" }
|
new Department { ID = 2, Name = "IT" }
|
||||||
};
|
};
|
||||||
// 示例数据源
|
```
|
||||||
|
|
||||||
|
示例数据源
|
||||||
|
|
||||||
|
```cs
|
||||||
List<Employee> employees = new List<Employee>
|
List<Employee> employees = new List<Employee>
|
||||||
{
|
{
|
||||||
new Employee { DepartmentID = 1, Name = "Alice" },
|
new Employee { DepartmentID = 1, Name = "Alice" },
|
||||||
@ -1230,28 +1220,31 @@ List<Employee> employees = new List<Employee>
|
|||||||
new Employee { DepartmentID = 1, Name = "Charlie" },
|
new Employee { DepartmentID = 1, Name = "Charlie" },
|
||||||
new Employee { DepartmentID = 3, Name = "David" }
|
new Employee { DepartmentID = 3, Name = "David" }
|
||||||
};
|
};
|
||||||
|
|
||||||
// 使用Join,将部门和员工相结合,获取部门名称和员工名称的集合
|
|
||||||
var joinQuery = departments.Join(employees,
|
|
||||||
department => department.ID, employee => employee.DepartmentID,
|
|
||||||
(department, employee) => new { Department = department.Name, Employee = employee.Name }
|
|
||||||
);
|
|
||||||
|
|
||||||
// 使用GroupJoin,将部门和员工相结合,返回所有的部门,并返回每个部门相关联的员工集合(嵌套)
|
|
||||||
var groupJoinQuery = departments.GroupJoin(employees,
|
|
||||||
department => department.ID, employee => employee.DepartmentID,
|
|
||||||
(department, employeeGroup) => new
|
|
||||||
{
|
|
||||||
Department = department.Name,
|
|
||||||
Employees = employeeGroup.Select(e => e.Name).ToList()
|
|
||||||
}
|
|
||||||
);
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
使用 `Join`,将部门和员工相结合,获取部门名称和员工名称的集合
|
||||||
|
|
||||||
|
```cs
|
||||||
|
var joinQuery = departments.Join(employees,
|
||||||
|
department => department.ID, employee => employee.DepartmentID,
|
||||||
|
(department, employee) => new { Department = department.Name, Employee = employee.Name }
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
使用 `GroupJoin`,将部门和员工相结合,返回所有的部门,并返回每个部门相关联的员工集合(嵌套)
|
||||||
|
|
||||||
|
```cs
|
||||||
|
var groupJoinQuery = departments.GroupJoin(employees,
|
||||||
|
department => department.ID, employee => employee.DepartmentID,
|
||||||
|
(department, employeeGroup) => new
|
||||||
|
{
|
||||||
|
Department = department.Name,
|
||||||
|
Employees = employeeGroup.Select(e => e.Name).ToList()
|
||||||
|
}
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
### 结果转换
|
### 结果转换
|
||||||
|
|
||||||
<!--rehype:wrap-class=col-span-2&style=background:#e91e63;-->
|
<!--rehype:wrap-class=col-span-2&style=background:#e91e63;-->
|
||||||
|
|
||||||
```cs
|
```cs
|
||||||
@ -1272,8 +1265,6 @@ Student firstStudent = result.First();
|
|||||||
Student firstStudent = result.FirstOrDefault();
|
Student firstStudent = result.FirstOrDefault();
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 自定义扩展方法
|
### 自定义扩展方法
|
||||||
|
|
||||||
```cs
|
```cs
|
||||||
@ -1293,14 +1284,12 @@ public static class CustomExtensions
|
|||||||
// 使用自定义扩展方法
|
// 使用自定义扩展方法
|
||||||
var filteredData = students.CustomFilter(s => s.Age > 20);
|
var filteredData = students.CustomFilter(s => s.Age > 20);
|
||||||
```
|
```
|
||||||
|
|
||||||
<!--rehype:className=wrap-text-->
|
<!--rehype:className=wrap-text-->
|
||||||
|
|
||||||
### 示例
|
### 示例
|
||||||
|
|
||||||
<!--rehype:wrap-class=col-span-3&style=background:#e91e63;-->
|
<!--rehype:wrap-class=col-span-3&style=background:#e91e63;-->
|
||||||
|
|
||||||
> 假设有一个包含学生信息的列表,每个学生有姓名、年龄和成绩。使用LINQ查询来选择年龄大于20岁的学生,然后按照他们的成绩进行分组,并选择每个分组中年龄最小的学生的姓名。
|
假设有一个包含学生信息的列表,每个学生有姓名、年龄和成绩。使用LINQ查询来选择年龄大于20岁的学生,然后按照他们的成绩进行分组,并选择每个分组中年龄最小的学生的姓名。
|
||||||
|
|
||||||
```cs
|
```cs
|
||||||
// 示例数据源
|
// 示例数据源
|
||||||
@ -1314,15 +1303,21 @@ List<Student> students = new List<Student>
|
|||||||
new Student { Name = "Damon", Age = 28, Grade = "B" },
|
new Student { Name = "Damon", Age = 28, Grade = "B" },
|
||||||
new Student { Name = "Echo", Age = 18, Grade = "C" }
|
new Student { Name = "Echo", Age = 18, Grade = "C" }
|
||||||
};
|
};
|
||||||
|
```
|
||||||
|
|
||||||
// 使用LINQ进行查询
|
使用 `LINQ` 进行查询
|
||||||
|
|
||||||
|
```cs
|
||||||
var result = students
|
var result = students
|
||||||
.Where(student => student.Age > 20) // WHERE: 选择年龄大于20的学生
|
.Where(student => student.Age > 20) // WHERE: 选择年龄大于20的学生
|
||||||
.GroupBy(student => student.Grade) // GROUP BY: 按成绩分组
|
.GroupBy(student => student.Grade) // GROUP BY: 按成绩分组
|
||||||
.Select(group => group.OrderBy(student => student.Age).First().Name) // SELECT: 选择每个分组中年龄最小的学生的姓名
|
.Select(group => group.OrderBy(student => student.Age).First().Name) // SELECT: 选择每个分组中年龄最小的学生的姓名
|
||||||
.ToList(); //转换为List<Student>()
|
.ToList(); //转换为List<Student>()
|
||||||
|
```
|
||||||
|
|
||||||
//输出结果
|
输出结果
|
||||||
|
|
||||||
|
```cs
|
||||||
["Charlie","Damon","David"]
|
["Charlie","Damon","David"]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user