下面是对" LINQ操作符SelectMany的用法 "的详细解释和示例说明。
什么是 SelectMany?
先来了解一下 SelectMany。在 LINQ 中,SelectMany 多用于关联查询,用于扁平化嵌套集合。SelectMany 可以将一个序列中的每个元素转换为另一个序列,并将每个序列的元素组合成一个序列。这一操作通常用于关联查询,将子类转换为父类。
SelectMany 的用法
下面我们来分析下 SelectMany 的使用方式:
基础用法
示例代码如下:
class Program
{
static void Main(string[] args)
{
// 基础使用方式
string[][] arr = new string[2][]
{
new string[]{"A","B","C" },
new string[]{"D", "E" }
};
var query = arr.SelectMany(s => s);
foreach (var item in query)
Console.WriteLine(item);
}
}
这个示例中,我们定义了一个嵌套字符串类型的数组,其中一个二级数组里面有三个字符串 "A","B","C",另一个只有两个字符串 "D","E"。 SelectMany 会循环遍历到每一个嵌套数组,将它和它里面的子元素一起组成一个序列。因此,最终的输出结果为:A, B, C, D, E。
完整的使用方式
示例代码如下:
class Program
{
static void Main(string[] args)
{
// 完整使用方式
var customers = new List<Customer>
{
new Customer
{
Name = "Minerva",
Orders = new List<Order>
{
new Order
{
OrderID = 1,
CustomerName = "Minerva",
Quantity = 10
},
new Order
{
OrderID = 3,
CustomerName = "Minerva",
Quantity = 15
}
}
},
new Customer
{
Name = "John",
Orders = new List<Order>
{
new Order
{
OrderID = 2,
CustomerName = "John",
Quantity = 5
}
}
}
};
var ordersQuery = customers
.SelectMany(c => c.Orders, (customer, order) => new
{
customer.Name,
order.OrderID,
order.Quantity
}
);
foreach (var order in ordersQuery)
Console.WriteLine("Name: {0} - OrderID: {1} - Quantity: {2}", order.Name, order.OrderID, order.Quantity);
}
}
public class Customer
{
public string Name { get; set; }
public List<Order> Orders { get; set; }
}
public class Order
{
public int OrderID { get; set; }
public string CustomerName { get; set; }
public int Quantity { get; set; }
}
这个示例中,我们定义了两个实体类型 Customer 和 Order 之间的关联关系。一个 Customer 包含了多个 Order, SelectMany 方法的第一个参数为 Customer,第二个参数为 Order,最后的参数用于组合新的查询结果。在这个示例中,我们将Name,OrderID和Quantity三个属性组合成了一个新的序列。最终输出结果如下:
Name: Minerva - OrderID: 1 - Quantity: 10
Name: Minerva - OrderID: 3 - Quantity: 15
Name: John - OrderID: 2 - Quantity: 5
这里的输出结果可以看出,对于每一个 Customer,都输出它的 OrderID 和 Quantity,对于每一个 Order ,都输出它的 Customer Name。
这就是 SelectMany 的使用方式,主要用于将多个集合进行扁平化的操作,从而方便进行关联查询。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:LINQ操作符SelectMany的用法 - Python技术站