C# GroupJoin: 连接两个对象集合并关联多个字段
可以使用 GroupJoin 方法将两个对象集合连接在一起,并且可以连接多个字段。以下是一个示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main(string[] args)
{
List<Person> persons = new List<Person>()
{
new Person { Id = 1, Name = 'John' },
new Person { Id = 2, Name = 'Jane' },
new Person { Id = 3, Name = 'Mike' }
};
List<Order> orders = new List<Order>()
{
new Order { PersonId = 1, OrderId = 100, Product = 'Product1', Quantity = 1 },
new Order { PersonId = 1, OrderId = 101, Product = 'Product2', Quantity = 2 },
new Order { PersonId = 2, OrderId = 102, Product = 'Product3', Quantity = 3 },
new Order { PersonId = 3, OrderId = 103, Product = 'Product4', Quantity = 4 }
};
var result = persons.GroupJoin(orders,
person => person.Id,
order => order.PersonId,
(person, orderGroup) => new
{
person.Id,
person.Name,
Orders = orderGroup.Select(order => new
{
order.OrderId,
order.Product,
order.Quantity
})
});
foreach (var item in result)
{
Console.WriteLine($'Person Id: {item.Id}');
Console.WriteLine($'Person Name: {item.Name}');
Console.WriteLine('Orders:');
foreach (var order in item.Orders)
{
Console.WriteLine($'Order Id: {order.OrderId}');
Console.WriteLine($'Product: {order.Product}');
Console.WriteLine($'Quantity: {order.Quantity}');
}
Console.WriteLine();
}
}
}
class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
class Order
{
public int PersonId { get; set; }
public int OrderId { get; set; }
public string Product { get; set; }
public int Quantity { get; set; }
}
在上面的示例中,我们有两个对象集合persons和orders,我们通过PersonId和Id字段将它们连接在一起。最后的结果是一个匿名类型对象,包含Person的Id、Name和Orders属性。Orders属性是一个集合,包含与每个人关联的订单信息。
原文地址: https://www.cveoy.top/t/topic/ppnm 著作权归作者所有。请勿转载和采集!