C# GroupJoin 2个对象集合List 同时连接4个字段
可以使用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属性是一个集合,包含与每个人关联的订单信息
原文地址: http://www.cveoy.top/t/topic/i0ID 著作权归作者所有。请勿转载和采集!