在最新的 .NET 9 预览版中,引入了两种令人兴奋的 LINQ 方法:
2**. 降低复杂性:**
例
public class User
{
public string? Name { get; set; }
public string? Role { get; set; }
}
internal class Program
{
static void Main(string[] args)
{
// Define a list of users
var users = new List<User>
{
new User { Name = "Alice", Role = "Admin" },
new User { Name = "Bob", Role = "Member" },
new User { Name = "Jay", Role = "Member" },
new User { Name = "Krishna", Role = "Admin" },
new User { Name = "An", Role = "Member" },
new User { Name = "Ka", Role = "Guest" },
};
// CountBy Role using GroupBy and Select
var roleCounts = users
.GroupBy(user => user.Role) // Group users by their roles
.Select(group => new { Role = group.Key, Count = group.Count() }); // Select the role and count for each group
// Print the results
foreach (var roleCount in roleCounts)
{
Console.WriteLine($"Role: {roleCount.Role}, Count: {roleCount.Count}");
}
}
}
// With .NET 9, the same operation can be achieved with cleaner code
foreach (var roleCount in users.CountBy(user => user.Role))
{
Console.WriteLine($"There are {roleCount.Value} users with the role {roleCount.Key}");
}
输出将是:
There are 3 users with the role Member
There are 2 users with the role Admin
There is 1 user with the role Guest
在引入之前,开发人员必须使用循环或多个 LINQ 方法手动实现自定义聚合逻辑。.AggregateBy
// Example: Summing numbers using a loop
var numbers = new List<int> { 1, 2, 3, 4 };
var sum = 0;
foreach (var number in numbers)
{
sum += number;
}
Console.WriteLine($"Sum: {sum}");
// Example: Summing numbers using .AggregateBy
var numbers = new List<int> { 1, 2, 3, 4 };
var totalSum = numbers.AggregateBy(n => "Total", (acc, number) => acc + number);
Console.WriteLine($"Total Sum: {totalSum.Value}");
输出将是:
Total Sum: 10
总而言之,使用并使您的代码更加简洁和富有表现力。它是 .NET 9 中 LINQ 的宝贵补充!