C#中的LINQ to Objects详解(2)
什么是LINQ to Objects
LINQ to Objects是针对C#中的对象(包括集合、类等)进行查询和操作的一种语言集成查询方式。它提供了一组标准的查询操作符,可以对对象进行所需的查询和处理操作,支持查询、筛选、排序、分组、连接等多种数据操作。
如何使用LINQ to Objects
使用LINQ to Objects需要引入System.Linq命名空间,该命名空间中定义了一组静态扩展方法,可供直接在IEnumerable集合上调用。以下是一些常用的方法:
方法 | 描述 |
---|---|
Select | 选择指定的属性或者对元素进行修改 |
Where | 筛选满足条件的元素 |
OrderBy、OrderByDescending | 对集合进行排序 |
GroupBy | 对元素根据指定的属性进行分组 |
Join、GroupJoin | 用于合并两个集合 |
Aggregate | 根据指定的逻辑运算合并集合 |
LINQ to Objects示例
示例1:筛选集合中符合条件的元素
以下是一个学生类,包括学生姓名和成绩两个属性:
public class Student
{
public string Name { get; set; }
public int Score { get; set; }
}
现在,有一个Student类型的列表students,我们希望筛选出成绩大于80分的学生,可以使用Where方法:
List<Student> students = new List<Student>
{
new Student { Name = "Alice", Score = 90 },
new Student { Name = "Bob", Score = 70 },
new Student { Name = "Chris", Score = 85 }
};
var result = students.Where(s => s.Score > 80); // 筛选大于80分的学生
示例2:对集合进行分组和排序
以下是一个订单类,包括订单号、商品名称和商品价格:
public class Order
{
public string OrderId { get; set; }
public string Product { get; set; }
public double Price { get; set; }
}
现在,有一个Order类型的列表orders,我们希望对商品名称进行分组,并按照商品价格从高到低进行排序,可以使用GroupBy和OrderByDescending方法:
List<Order> orders = new List<Order>
{
new Order { OrderId = "1001", Product = "iPhone", Price = 8999 },
new Order { OrderId = "1002", Product = "iPad", Price = 5099 },
new Order { OrderId = "1003", Product = "iMac", Price = 12999 },
new Order { OrderId = "1004", Product = "MacBook Pro", Price = 12999 },
new Order { OrderId = "1005", Product = "AirPods Pro", Price = 1999 },
new Order { OrderId = "1006", Product = "Apple Watch", Price = 3199 },
new Order { OrderId = "1007", Product = "HomePod", Price = 2299 },
new Order { OrderId = "1008", Product = "Mac mini", Price = 6799 },
new Order { OrderId = "1009", Product = "Magic Mouse 2", Price = 549 }
};
var result = orders.GroupBy(o => o.Product) // 对商品名称进行分组
.OrderByDescending(g => g.Max(o => o.Price)); // 按照商品价格从高到低进行排序
总结
以上是LINQ to Objects的基本使用方法,通过LINQ to Objects,我们可以方便地对C#中的对象进行各种查询和操作。在实际开发中,也可以根据需要自定义扩展方法,进一步提高代码的可读性和可维护性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中的LINQ to Objects详解(2) - Python技术站