Loading... ### 掌握 LINQ:通过示例解释 C# 中强大的 LINQ 集合运算 Language Integrated Query (LINQ) 是 C# 中一个强大的特性,用于查询和操作数据集合。LINQ 提供了一种简洁、类型安全和可读性高的方式来处理数据集合。本文将通过多个示例详细解释 LINQ 的集合运算,包括筛选、排序、分组、投影和连接。 #### 一、LINQ 基础 LINQ 查询通常由以下部分组成: 1. **数据源**:要查询的集合。 2. **查询**:定义如何从数据源中提取信息。 3. **执行**:对查询进行遍历以检索数据。 示例数据源: ```csharp List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; ``` #### 二、筛选(Filtering) 筛选操作用于从数据源中选择符合条件的元素。 **示例:选择所有偶数** ```csharp var evenNumbers = from number in numbers where number % 2 == 0 select number; foreach (var num in evenNumbers) { Console.WriteLine(num); } ``` #### 三、排序(Sorting) 排序操作用于对数据源中的元素进行排序。 **示例:按升序排序** ```csharp var ascendingNumbers = from number in numbers orderby number select number; foreach (var num in ascendingNumbers) { Console.WriteLine(num); } ``` **示例:按降序排序** ```csharp var descendingNumbers = from number in numbers orderby number descending select number; foreach (var num in descendingNumbers) { Console.WriteLine(num); } ``` #### 四、分组(Grouping) 分组操作用于将数据源中的元素按指定的键进行分组。 **示例:按奇偶分组** ```csharp var groupedNumbers = from number in numbers group number by number % 2 into numberGroup select numberGroup; foreach (var group in groupedNumbers) { Console.WriteLine(group.Key == 0 ? "Even numbers:" : "Odd numbers:"); foreach (var num in group) { Console.WriteLine(num); } } ``` #### 五、投影(Projection) 投影操作用于从数据源中选择特定的元素或计算结果。 **示例:选择数字的平方** ```csharp var squaredNumbers = from number in numbers select number * number; foreach (var num in squaredNumbers) { Console.WriteLine(num); } ``` #### 六、连接(Joining) 连接操作用于将两个数据源的相关元素组合在一起。 **示例:内连接** ```csharp List<string> categories = new List<string> { "A", "B", "C" }; List<Product> products = new List<Product> { new Product { Name = "Apple", Category = "A" }, new Product { Name = "Banana", Category = "B" }, new Product { Name = "Carrot", Category = "C" }, new Product { Name = "Date", Category = "D" } }; var innerJoin = from category in categories join product in products on category equals product.Category select new { Category = category, Product = product.Name }; foreach (var item in innerJoin) { Console.WriteLine($"Category: {item.Category}, Product: {item.Product}"); } ``` #### 七、综合示例 结合多个 LINQ 操作进行综合示例。 **示例:筛选、排序、分组和投影** ```csharp var result = from number in numbers where number % 2 == 0 orderby number descending group number by number % 4 into numberGroup select new { Remainder = numberGroup.Key, Numbers = numberGroup }; foreach (var group in result) { Console.WriteLine($"Numbers with remainder {group.Remainder} when divided by 4:"); foreach (var num in group.Numbers) { Console.WriteLine(num); } } ``` #### 八、思维导图 ```plaintext LINQ 集合运算 │ ├── 筛选(Filtering) │ └── 示例:选择所有偶数 │ ├── 排序(Sorting) │ ├── 示例:按升序排序 │ └── 示例:按降序排序 │ ├── 分组(Grouping) │ └── 示例:按奇偶分组 │ ├── 投影(Projection) │ └── 示例:选择数字的平方 │ └── 连接(Joining) └── 示例:内连接 ``` #### 九、总结 通过本文的示例,我们详细介绍了C#中LINQ的强大集合运算功能。LINQ提供了一种简洁、灵活和类型安全的方式来查询和操作数据集合,从而大大提高了代码的可读性和可维护性。希望本文能帮助读者更好地掌握和应用LINQ,提高开发效率。 最后修改:2024 年 08 月 07 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏