投影方法:
Select
Select
: 选择指定元素或属性。
var numbers = new List<int> { 1, 2, 3, 4, 5 }; var squares = numbers.Select(num => num * num); // 执行结果:squares = { 1, 4, 9, 16, 25 } var names = new List<string> { "Alice", "Bob", "Charlie" }; var nameLengths = names.Select(name => name.Length); // 执行结果:nameLengths = { 5, 3, 7 }
SelectMany
SelectMany
: 投影并平坦化嵌套的集合。SelectMany
方法用于将一个集合中的每个元素的子集合(集合中的集合)合并为一个扁平化的结果集合。以下是一个使用SelectMany
方法的示例:
var teams = new List<Team> { new Team { Name = "Team A", Members = new List<string> { "Alice", "Bob" } }, new Team { Name = "Team B", Members = new List<string> { "Charlie", "David" } }, new Team { Name = "Team C", Members = new List<string> { "Eve", "Frank" } } }; var allMembers = teams.SelectMany(team => team.Members);
在上述示例中,我们有一个包含多个团队的 teams
列表,每个团队都有一个名称和成员列表。使用 SelectMany
方法,我们将每个团队的成员列表合并为一个扁平化的结果集合 allMembers
。
执行结果 allMembers 是一个包含所有团队成员的扁平化集合:
"Alice", "Bob", "Charlie", "David", "Eve", "Frank"
注意,allMembers 中的元素是从每个团队的成员列表中提取出来的,并被合并为一个单独的集合。
使用 SelectMany 方法,你可以在涉及嵌套集合的情况下,方便地将多个子集合合并为一个扁平化的结果集合,以便进行进一步的操作或处理。
分组方法:
GroupBy
GroupBy: 根据指定键将元素分组。
GroupBy 方法用于根据指定的键对集合进行分组。它将集合中具有相同键的元素分组,并返回一个包含分组结果的序列。以下是一个使用 GroupBy 方法的示例:
var students = new List<Student> { new Student { Name = "Alice", Grade = "A" }, new Student { Name = "Bob", Grade = "B" }, new Student { Name = "Charlie", Grade = "A" }, new Student { Name = "David", Grade = "B" } }; var groupedStudents = students.GroupBy(student => student.Grade);
在上述示例中,我们有一个包含多个学生的 students 列表,每个学生都有一个姓名和成绩。使用 GroupBy 方法,我们根据学生的成绩将学生分组。
执行结果 groupedStudents 是一个包含分组结果的序列,每个分组都表示一个成绩。每个分组都是一个键/值对的集合,其中键是成绩,值是具有相同成绩的学生集合。
你可以通过迭代分组结果来访问每个分组和其中的元素。例如,可以通过 foreach 循环来遍历每个分组并打印出其中的学生姓名:
foreach (var group in groupedStudents) { Console.WriteLine("Grade: " + group.Key); foreach (var student in group) { Console.WriteLine(" " + student.Name); } Console.WriteLine(); }
执行结果:
Grade: A Alice Charlie Grade: B Bob David
在上述示例中,我们使用 group.Key 来获取分组的键(成绩),然后使用内部的 foreach 循环来迭代每个分组中的学生,并打印出学生的姓名。
GroupBy 方法允许你根据指定的键对集合进行灵活的分组操作,并且可以对每个分组进行进一步的处理和操作。
连接方法:
Join
Join
: 在两个数据源之间执行内部联接。
Join 方法用于根据两个集合中的共同键将它们进行连接。它返回一个新的集合,其中包含了两个集合中共同键匹配的元素。以下是一个使用 Join 方法的示例:
var customers = new List<Customer> { new Customer { Id = 1, Name = "Alice" }, new Customer { Id = 2, Name = "Bob" }, new Customer { Id = 3, Name = "Charlie" } }; var orders = new List<Order> { new Order { OrderId = 1, CustomerId = 2, Product = "Phone" }, new Order { OrderId = 2, CustomerId = 1, Product = "Laptop" }, new Order { OrderId = 3, CustomerId = 2, Product = "Tablet" } }; var result = customers.Join( orders, customer => customer.Id, order => order.CustomerId, (customer, order) => new { CustomerName = customer.Name, OrderProduct = order.Product }); foreach (var item in result) { Console.WriteLine($"Customer: {item.CustomerName}, Product: {item.OrderProduct}"); }
在上述示例中,我们有两个集合:customers 和 orders。customers 集合包含了客户信息,orders 集合包含了订单信息。我们使用 Join 方法将这两个集合连接起来,基于它们共同的键(CustomerId 和 Id),并创建一个包含连接结果的新集合。
在 Join 方法的参数中,我们指定了两个集合的键以及连接后的结果的形式。在这个示例中,我们将客户的名称和订单的产品信息连接到一个匿名类型的对象中。
执行结果:
Customer: Bob, Product: Phone Customer: Alice, Product: Laptop Customer: Bob, Product: Tablet
在上述示例中,我们遍历连接后的结果集合 result,并打印每个连接结果的客户名称和订单产品信息。
Join 方法允许你根据共同键将两个集合进行连接,并获取连接后的结果。你可以根据具体的需求在连接后的结果中选择所需的信息并进行进一步的处理。
GroupJoin
GroupJoin
: 在两个数据源之间执行左外部联接。
GroupJoin 方法用于根据一个集合的键,将该集合与另一个集合进行分组连接。它返回一个新的集合,其中每个元素包含了原始集合的元素以及与之匹配的分组的元素。以下是一个使用 GroupJoin 方法的示例:
var departments = new List<Department> { new Department { Id = 1, Name = "Sales" }, new Department { Id = 2, Name = "Marketing" }, new Department { Id = 3, Name = "IT" } }; var employees = new List<Employee> { new Employee { Id = 1, Name = "Alice", DepartmentId = 1 }, new Employee { Id = 2, Name = "Bob", DepartmentId = 2 }, new Employee { Id = 3, Name = "Charlie", DepartmentId = 1 }, new Employee { Id = 4, Name = "David", DepartmentId = 3 }, new Employee { Id = 5, Name = "Eve", DepartmentId = 2 } }; var result = departments.GroupJoin( employees, department => department.Id, employee => employee.DepartmentId, (department, employeeGroup) => new { DepartmentName = department.Name, Employees = employeeGroup }); foreach (var item in result) { Console.WriteLine($"Department: {item.DepartmentName}"); foreach (var employee in item.Employees) { Console.WriteLine($" Employee: {employee.Name}"); } Console.WriteLine(); }
在上述示例中,我们有两个集合:departments 和 employees。departments 集合包含了部门信息,employees 集合包含了员工信息。我们使用 GroupJoin 方法将这两个集合进行分组连接,基于它们的共同键(Id 和 DepartmentId),并创建一个包含连接结果的新集合。
在 GroupJoin 方法的参数中,我们指定了两个集合的键以及连接后的结果的形式。在这个示例中,我们将部门的名称和与之相关联的员工集合连接到一个匿名类型的对象中。
执行结果:
Department: Sales Employee: Alice Employee: Charlie Department: Marketing Employee: Bob Employee: Eve Department: IT Employee: David
在上述示例中,我们遍历分组连接后的结果集合 result,并打印每个部门及其相关的员工信息。
GroupJoin 方法允许你根据一个集合的键将该集合与另一个集合进行分组连接,并获取连接后的结果。你可以根据具体的需求访问每个连接结果的原始元素以及与之匹配的分组元素,并进行进一步的处理。
聚合方法:
Count
Count
: 计算元素的个数。
Count 方法用于计算集合中元素的数量。它返回一个表示集合中元素数量的整数值。以下是一个使用 Count 方法的示例:
var numbers = new List<int> { 1, 2, 3, 4, 5 }; var count = numbers.Count(); Console.WriteLine($"Count: {count}");
在上述示例中,我们有一个包含整数的 numbers 列表。我们使用 Count 方法计算列表中元素的数量,并将结果存储在变量 count 中。
执行结果:
Count: 5
在上述示例中,Count 方法返回列表中元素的数量,即 5。
Count 方法可以用于各种集合类型,例如列表、数组、集合等。它是用于确定集合中元素数量的常用方法之一。
Sum
Sum
: 计算元素的总和。
Sum 方法用于计算集合中数值型元素的总和。它返回一个表示集合中元素总和的数值类型结果。以下是几个示例:
使用 Sum 方法计算整数集合的总和:
var numbers = new List<int> { 1, 2, 3, 4, 5 }; var sum = numbers.Sum(); Console.WriteLine($"Sum: {sum}");
执行结果:
Sum: 15
在上述示例中,我们有一个包含整数的 numbers 列表。我们使用 Sum 方法计算列表中元素的总和,并将结果存储在变量 sum 中。
使用 Sum 方法计算浮点数集合的总和:
var prices = new List<double> { 10.5, 20.3, 15.2, 8.7 }; var total = prices.Sum(); Console.WriteLine($"Total: {total}");
执行结果:
Total: 54.7
在上述示例中,我们有一个包含浮点数的 prices 列表。我们使用 Sum 方法计算列表中元素的总和,并将结果存储在变量 total 中。
Sum 方法适用于各种数值类型,例如整数、浮点数、decimal 等。它是用于计算集合中数值型元素总和的常用方法之一。请确保在使用 Sum 方法时,集合中的元素类型是数值型的。如果集合中包含非数值型元素,将会引发异常。
Min
Min
: 找到最小值。
Min 方法用于找到集合中数值型元素的最小值。它返回集合中的最小值,其类型与集合元素的类型相同。以下是几个示例:
使用 Min 方法找到整数集合的最小值:
var numbers = new List<int> { 10, 5, 3, 8, 2 }; var min = numbers.Min(); Console.WriteLine($"Min: {min}");
执行结果:
Min: 2
在上述示例中,我们有一个包含整数的 numbers 列表。我们使用 Min 方法找到列表中的最小值,并将结果存储在变量 min 中。
使用 Min 方法找到浮点数集合的最小值:
var prices = new List<double> { 10.5, 20.3, 15.2, 8.7 }; var minPrice = prices.Min(); Console.WriteLine($"Min Price: {minPrice}");
执行结果:
Min Price: 8.7
在上述示例中,我们有一个包含浮点数的 prices 列表。我们使用 Min 方法找到列表中的最小值,并将结果存储在变量 minPrice 中。
Min 方法适用于各种数值类型,例如整数、浮点数、decimal 等。它用于找到集合中数值型元素的最小值。请确保在使用 Min 方法时,集合中的元素类型是数值型的。如果集合中包含非数值型元素,将会引发异常。
Max
Max
: 找到最大值。
Max 方法用于找到集合中数值型元素的最大值。它返回集合中的最大值,其类型与集合元素的类型相同。以下是几个示例:
使用 Max 方法找到整数集合的最大值:
var numbers = new List<int> { 10, 5, 3, 8, 2 }; var max = numbers.Max(); Console.WriteLine($"Max: {max}");
执行结果:
Max: 10
在上述示例中,我们有一个包含整数的 numbers 列表。我们使用 Max 方法找到列表中的最大值,并将结果存储在变量 max 中。
使用 Max 方法找到浮点数集合的最大值:
var prices = new List<double> { 10.5, 20.3, 15.2, 8.7 }; var maxPrice = prices.Max(); Console.WriteLine($"Max Price: {maxPrice}");
执行结果:
Max Price: 20.3
在上述示例中,我们有一个包含浮点数的 prices 列表。我们使用 Max 方法找到列表中的最大值,并将结果存储在变量 maxPrice 中。
Max 方法适用于各种数值类型,例如整数、浮点数、decimal 等。它用于找到集合中数值型元素的最大值。请确保在使用 Max 方法时,集合中的元素类型是数值型的。如果集合中包含非数值型元素,将会引发异常。